`
gypgyp
  • 浏览: 87332 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

不要在viewDidLoad中初始复杂的界面

阅读更多

      开发中一个详情界面的内容非常多,在从列表页进入详情界面时,在列表界面停顿很长时间后才进入详情界面。原因就是详情界面的初始化放在了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];}

}

 

分享到:
评论

相关推荐

    initWithNibName和viewDidLoad执行顺序

    例如,我们应该把所有与界面初始化相关的操作放在`viewDidLoad`中,以确保视图已经准备好,同时避免在初始化过程中过早地接触视图。此外,对于需要在视图显示前进行的准备工作,如网络请求、数据加载等,可以在`...

    构建 View 时可能用到的代理函数调用顺序 viewdidload

    通过合理利用`viewDidLoad`和`viewWillAppear`等方法,可以在合适的时机进行必要的初始化和更新操作,从而提升用户体验和应用程序的整体质量。希望本文提供的内容能够帮助新手开发者更快地掌握这些基础知识。

    登陆界面和进入文本界面Demo

    开发者可能会在`LoginViewController`的初始化方法中设置界面布局,使用Auto Layout或Size Classes来适应不同屏幕尺寸。同时,他们会在`viewDidLoad`或`awakeFromNib`方法中配置UI元素,如设置字体、颜色、边距等。 ...

    让不懂编程的人爱上iPhone开发(2013球iOS7版)-第6篇1

    解决这个问题的方法是在viewDidLoad方法中,直接获取xib界面中滑动条的初始值并赋给currentValue。但在尝试这样做的时候,会遇到编译错误,提示未声明identifier 'slider'。这是因为viewDidLoad方法并不知道slider这...

    ios-某个界面横竖屏转化以及强制横屏,其他界面只能竖屏.zip

    如果希望某个界面强制横屏,可以在该界面的`viewDidLoad`方法中设置`self.supportedInterfaceOrientations = .landscapeLeft.union(.landscapeRight)`。 此外,`willAnimateRotationToInterfaceOrientation:...

    斯坦福大学iOS开发教程2011年秋Lecture 8

    虽然viewDidLoad可能只被调用一次,但视图可能会多次出现和消失,因此不要将应在viewDidLoad中执行的操作放在viewWillAppear中,以免重复执行不必要的操作。可以在此处启动昂贵的计算或操作,以优化性能,但可能需要...

    界面抽屉侧滑

    在iOS应用开发中,"界面抽屉侧滑"是一种常见的设计模式,通常用于实现类似汉堡菜单的效果,让用户可以从屏幕边缘滑动出一个隐藏的菜单。这种设计方式在移动设备上非常流行,因为它节省了屏幕空间,同时提供了方便的...

    iOS经验之初始化方法中不该设置self.view的属性浅析

    在iOS应用开发中,尤其是使用Objective-C或Swift构建用户界面时,初始化方法是构建类对象的关键环节。然而,一个常见的误解是将初始化过程与视图加载混淆,这可能导致一些意料之外的问题。本文将深入探讨为何在初始...

    uiscrollerview和uipagecontroll完成的欢迎界面

    7. 最后,不要忘记在`viewDidLoad`或适当的时机调用`setNeedsLayout`和`layoutSubviews`来布局所有子视图,确保它们正确显示在`UIScrollView`中。 通过这种方式,我们不仅可以实现一个美观的欢迎界面,还能学习到`...

    类似于安卓的可以添加或删除主界面的效果demo功能ios源码.rar

    - 子类化UIViewController并重写其生命周期方法,如`viewDidLoad`,`viewWillAppear`等,以便在加载时初始化和设置界面元素。 - 设计UI布局,可以使用Storyboard或代码创建界面,例如使用UICollectionView展示主...

    IOS应用源码之iPad上面的一个自动跳出提示选项界面的效果demo.rar

    在这个示例中,`UIViewController`的子类被用来创建并控制提示选项界面的显示和消失。开发者可能会重写`viewDidLoad`、`viewWillAppear`或`viewDidAppear`等生命周期方法来决定何时以及如何展示提示界面。 接着,...

    自定义登陆动画界面

    - **加载视图**: 在`- (void)viewDidLoad`中设置初始界面和动画。 - **视图出现**: `- (void)viewWillAppear:`和`- (void)viewDidAppear:`可以用来启动动画或更新视图状态。 5. **手势识别与交互** - **...

    swift-MessengerKit:用于在iOS上构建MessengerMessenger界面的UI框架

    以上代码展示了如何在`ChatViewController`中初始化`MessageCollectionView`,并实现了数据源和代理方法。实际项目中,你需要根据自己的需求填充`messages()`方法并处理`didTapMessage`事件。 总之,`MessengerKit`...

    iOS中的View Controller Lifecycle

    例如,可以在`viewDidLoad`中初始化界面元素,在`viewWillAppear:`中设置初始状态,在`viewWillDisappear:`中保存用户数据,等等。 在给定的"Storyboard_unwindDemo"示例中,我们可能看到如何使用Storyboard中的...

    第五节 编程定制UIViewController.docx

    当一个`UIViewController`实例被初始化时,如果它没有关联的XIB文件,系统会自动创建一个默认的`UIView`对象,并在`viewDidLoad`方法中加载这个view。因此,开发者可以在`viewDidLoad`中对视图进行自定义配置。 ...

    ios-ScroolViewVC模仿新闻类APP主界面.zip

    在Swift中,这通常涉及在`viewDidLoad`、`viewWillAppear:`等生命周期方法中设置布局和内容。 7. **数据源**: 新闻卡片通常需要从网络或本地数据库获取数据,因此项目可能包含一个数据模型和数据源协议。这个协议...

    iphone 开发入门例子 helloworld

    "的例子没有涉及复杂的界面设计,但在实际开发中,我们会用到Storyboard或SwiftUI来构建用户界面。Storyboard是一种图形化布局工具,而SwiftUI则是Apple推出的声明式UI框架,让界面设计变得更加直观。 九、编译与...

    IOS源码——自定义UITableViewCell。实现各种样式的表格输入界面.zip

    在iOS应用开发中,自定义UITableViewCell是创建独特且交互丰富的用户界面的关键步骤。这个压缩包“IOS源码——自定义UITableViewCell。实现各种样式的表格输入界面.zip”显然包含了一个示例项目,它演示了如何为...

    swift-iOS的聊天消息界面视图JSQMessagesViewController

    Swift开发在iOS应用中涉及到许多领域,而创建一个聊天消息界面是常见的需求,尤其是在社交、协作或通讯类应用中。JSQMessagesViewController是第三方库,它为开发者提供了一个优雅、可自定义的聊天界面实现。这个库...

    ios-搜索界面的封装.zip

    1. **初始化和配置`UISearchBar`**:在`SearchVC`的`viewDidLoad`方法中,实例化`UISearchBar`,并设置其代理为`SearchVC`自身,这样我们可以响应`UISearchBarDelegate`的方法。 2. **实现`UISearchBarDelegate`**...

Global site tag (gtag.js) - Google Analytics