有一种方法可以预先加载模态视图控制器而不显示它吗? 我问,因为当我显示模态视图控制器(分配和初始化视图控制器类)时,视图加载和显示有一点延迟。 之后,当我再次尝试显示时,延迟就会停止。
我正在使用UITableView
,在方法scrollViewDidEndDragging
内,我检查contentOffset.y
是否小于-90。如果是这样,用户基本上“拉到刷新”,然后我正在加载视图。
答案 0 :(得分:0)
您可以手动调用viewWillAppear,viewDidLoad。
答案 1 :(得分:0)
UINib
将XIB预加载到内存中。它会将XIB的对象树预解码到内存中,但不会实例化XIB中的对象。然后,您可以调用instantiate
的{{1}}方法来实现视图。
UINib
getter方法强制加载view
的{{1}}(因为视图是延迟加载的,所以它将从XIB加载第一次访问时。)。但是因为您只能在主线程上实例化UI对象(来自您的XIB) - 因为每个UI组件和UI操作都必须在主线程中完成 - 您的应用程序仍将“冻结”(阻止主要加载视图时。例如,您不能将XIB的根UIView加载到单独的线程或队列中(如果您尝试,则会有运行时异常)。
使用工具及其“Time Profiler”工具来检查XIB文件的加载过程需要花费多长时间。 (也许它很容易解决,或者你可能会有一些组件,你只能在显示视图后才能延迟加载等)。
答案 2 :(得分:0)
您可以在viewWillAppear上加载视图的所有内容,然后显示它。
或者,您可以加载模态视图的所有属性,然后使用方法显示它。使视图成为一个属性。
答案 3 :(得分:0)
您可以尝试访问该视图,这将使viewDidLoad方法被调用,虽然这不是应该做的事情......
//Preload
YourViewController * controller = [[YourViewController alloc] init];
controller.view.backgroundColor = [UIColor whiteColor];
.
.
.
.
//Load Controller after time
[self presentModalViewController:controller animated:YES];