我有一个使用UITableViewController
在屏幕上显示表格的iPhone应用程序。表的数据(以及App使用的更多数据)在我的App Delegate的didFinishLaunchingWithOptions:
方法中初始化。
该应用程序在iOS4上完美运行。在iOS5上,表的数据不会加载。
我检查了一下,发现didFinishLaunchingWithOptions:
方法现在与显示视图并行调用。出于这个原因,当获取表的大小时,我转到我的App Delegate,它仍然没有加载表数据,因此返回“0”。
有没有办法在iOS 5中解决这个问题?
以下是我在视图中首先调用的方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
PalmsterAppDelegate *appDelegate = (PalmsterAppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"tableView: %i", [appDelegate.listOfItems count]);
return [appDelegate.listOfItems count];
}
调用:[appDelegate.listOfItems count]
返回零。它清楚地表明订单的事情是:
didFinishLaunchingWithOptions
(我打印到方法开头的日志中)。
然后调用tableView
并打印零。然后didFinishLaunchingWithOptions
完成(我也打印到方法结尾的日志中)。
答案 0 :(得分:0)
将初始化代码移动到app委托中的单独方法中,然后从表视图控制器的-viewDidLoad
方法中调用该方法。
确保只初始化一次,无论调用初始化方法多少次。