开发中一个详情界面的内容非常多,在从列表页进入详情界面时,在列表界面停顿很长时间后才进入详情界面。原因就是详情界面的初始化放在了viewDidLoad中,而在此时间内,会一直停在列表界面,用户的使用感受很不好。
解决方案:
1、在viewDidLoad中显法一个加载界面,
2、将界面初始化放在viewDidAppear中。
这样,用户就不会在从列表界面进入详情界面时界面时,等很长时间了。
@interface DetailVC :UIViewController
{
BOOL _isAppear;
UIView* _loadingView;
}
- (void)viewDidLoad
{
[superviewDidLoad];
_loadingView = [[UIViewalloc]initWithFrame:CGRectMake(0,200,320,30)];
_loadingView.backgroundColor = [UIColorclearColor];
[self.viewaddSubview:_loadingView];
UIActivityIndicatorView *aiv = [[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
aiv.frame =CGRectMake(99,3,25,25);
aiv.backgroundColor = [UIColorclearColor];
[_loadingViewaddSubview:aiv];
[aivstartAnimating];
UILabel* lblPrompt = [[UILabelalloc]initWithFrame:CGRectMake(129,0,98,30)];
lblPrompt.backgroundColor = [UIColorclearColor];
lblPrompt.font = [UIFontsystemFontOfSize:15.0];
lblPrompt.textColor =DEEP_FOUNT_COLOR;
lblPrompt.text =@"正在加载中······";
[_loadingViewaddSubview:lblPrompt];
}
-(void)viewDidAppear:(BOOL)animated
{
[superviewDidAppear:animated];
if(_isAppear){return ;}
_isAppear = YES;
//注意!!!在此处执行复杂的界面初始化工作。
if(_loadingView){[_loadingViewremoveFromSuperview];}
}
相关推荐
例如,我们应该把所有与界面初始化相关的操作放在`viewDidLoad`中,以确保视图已经准备好,同时避免在初始化过程中过早地接触视图。此外,对于需要在视图显示前进行的准备工作,如网络请求、数据加载等,可以在`...
通过合理利用`viewDidLoad`和`viewWillAppear`等方法,可以在合适的时机进行必要的初始化和更新操作,从而提升用户体验和应用程序的整体质量。希望本文提供的内容能够帮助新手开发者更快地掌握这些基础知识。
开发者可能会在`LoginViewController`的初始化方法中设置界面布局,使用Auto Layout或Size Classes来适应不同屏幕尺寸。同时,他们会在`viewDidLoad`或`awakeFromNib`方法中配置UI元素,如设置字体、颜色、边距等。 ...
解决这个问题的方法是在viewDidLoad方法中,直接获取xib界面中滑动条的初始值并赋给currentValue。但在尝试这样做的时候,会遇到编译错误,提示未声明identifier 'slider'。这是因为viewDidLoad方法并不知道slider这...
如果希望某个界面强制横屏,可以在该界面的`viewDidLoad`方法中设置`self.supportedInterfaceOrientations = .landscapeLeft.union(.landscapeRight)`。 此外,`willAnimateRotationToInterfaceOrientation:...
虽然viewDidLoad可能只被调用一次,但视图可能会多次出现和消失,因此不要将应在viewDidLoad中执行的操作放在viewWillAppear中,以免重复执行不必要的操作。可以在此处启动昂贵的计算或操作,以优化性能,但可能需要...
在iOS应用开发中,"界面抽屉侧滑"是一种常见的设计模式,通常用于实现类似汉堡菜单的效果,让用户可以从屏幕边缘滑动出一个隐藏的菜单。这种设计方式在移动设备上非常流行,因为它节省了屏幕空间,同时提供了方便的...
在iOS应用开发中,尤其是使用Objective-C或Swift构建用户界面时,初始化方法是构建类对象的关键环节。然而,一个常见的误解是将初始化过程与视图加载混淆,这可能导致一些意料之外的问题。本文将深入探讨为何在初始...
7. 最后,不要忘记在`viewDidLoad`或适当的时机调用`setNeedsLayout`和`layoutSubviews`来布局所有子视图,确保它们正确显示在`UIScrollView`中。 通过这种方式,我们不仅可以实现一个美观的欢迎界面,还能学习到`...
- 子类化UIViewController并重写其生命周期方法,如`viewDidLoad`,`viewWillAppear`等,以便在加载时初始化和设置界面元素。 - 设计UI布局,可以使用Storyboard或代码创建界面,例如使用UICollectionView展示主...
在这个示例中,`UIViewController`的子类被用来创建并控制提示选项界面的显示和消失。开发者可能会重写`viewDidLoad`、`viewWillAppear`或`viewDidAppear`等生命周期方法来决定何时以及如何展示提示界面。 接着,...
- **加载视图**: 在`- (void)viewDidLoad`中设置初始界面和动画。 - **视图出现**: `- (void)viewWillAppear:`和`- (void)viewDidAppear:`可以用来启动动画或更新视图状态。 5. **手势识别与交互** - **...
以上代码展示了如何在`ChatViewController`中初始化`MessageCollectionView`,并实现了数据源和代理方法。实际项目中,你需要根据自己的需求填充`messages()`方法并处理`didTapMessage`事件。 总之,`MessengerKit`...
例如,可以在`viewDidLoad`中初始化界面元素,在`viewWillAppear:`中设置初始状态,在`viewWillDisappear:`中保存用户数据,等等。 在给定的"Storyboard_unwindDemo"示例中,我们可能看到如何使用Storyboard中的...
当一个`UIViewController`实例被初始化时,如果它没有关联的XIB文件,系统会自动创建一个默认的`UIView`对象,并在`viewDidLoad`方法中加载这个view。因此,开发者可以在`viewDidLoad`中对视图进行自定义配置。 ...
在Swift中,这通常涉及在`viewDidLoad`、`viewWillAppear:`等生命周期方法中设置布局和内容。 7. **数据源**: 新闻卡片通常需要从网络或本地数据库获取数据,因此项目可能包含一个数据模型和数据源协议。这个协议...
"的例子没有涉及复杂的界面设计,但在实际开发中,我们会用到Storyboard或SwiftUI来构建用户界面。Storyboard是一种图形化布局工具,而SwiftUI则是Apple推出的声明式UI框架,让界面设计变得更加直观。 九、编译与...
在iOS应用开发中,自定义UITableViewCell是创建独特且交互丰富的用户界面的关键步骤。这个压缩包“IOS源码——自定义UITableViewCell。实现各种样式的表格输入界面.zip”显然包含了一个示例项目,它演示了如何为...
Swift开发在iOS应用中涉及到许多领域,而创建一个聊天消息界面是常见的需求,尤其是在社交、协作或通讯类应用中。JSQMessagesViewController是第三方库,它为开发者提供了一个优雅、可自定义的聊天界面实现。这个库...
1. **初始化和配置`UISearchBar`**:在`SearchVC`的`viewDidLoad`方法中,实例化`UISearchBar`,并设置其代理为`SearchVC`自身,这样我们可以响应`UISearchBarDelegate`的方法。 2. **实现`UISearchBarDelegate`**...