我使用基于页面的应用程序非常类似于apple(基于页面的应用程序)的标准模板。我希望所有页面都可以在启动时加载并保存在内存中,但它不起作用。我将ViewControllers
显示在UIPageViewController
中的所有NSArray
保留在我发起的ViewControllers
中。问题是PageViewController
在ViewControllers
调用它们之前不会启动ModelController
。如何在- (id)init
{
self = [super init];
if (self) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *historyViewController = [storyboard instantiateViewControllerWithIdentifier:@"HistoryViewController"];
historyViewController.restorationIdentifier= HistoryRestorationID;
UIViewController *totalViewController = [storyboard instantiateViewControllerWithIdentifier:@"TotalViewSlidingController"];
totalViewController.restorationIdentifier= TotalRestorationID;
PlugTableViewController *plugViewController = [storyboard instantiateViewControllerWithIdentifier:@"PlugSlidingViewController"];
plugViewController.restorationIdentifier= PlugRestorationID;
//Force initiation of ViewController here!
pages = [[NSArray alloc] initWithObjects:historyViewController,totalViewController,plugViewController, nil];
}
return self;
的init方法中强制启动{{1}}。
{{1}}
}
我想直接启动它们的原因是因为它们需要时间来启动它们。
答案 0 :(得分:0)
在有人引用其view属性之前,不会加载视图层次结构。
尝试拨打[historyViewController view]
或阅读historyViewController.view
。它应该完成这项工作。
答案 1 :(得分:0)
尝试对要使用此视图的对象进行类型转换,希望这可以完成这项工作。
PlugTableViewController *plugView=(PlugTableViewController *)[pages objectAtIndex:3];
还有一件事,试着改变代码
UIViewController *historyViewController = [storyboard instantiateViewControllerWithIdentifier:@"HistoryViewController"];
到
HistoryViewController *historyViewController = [storyboard instantiateViewControllerWithIdentifier:@"HistoryViewController"];
希望您已经制作了一个标题类HistoryViewController
,但是您要按UIViewController
另一种可能的解决方案是预加载数据而不是viewcontroller,因为视图控制器不需要花时间加载。
最常见的方法是将所有视图添加为子视图并将其隐藏,并在需要时显示它们。