Apple iOS5和didFinishLaunchingWithOptions

时间:2011-10-16 22:11:10

标签: objective-c uitableview ios4 ios5 uiapplicationdelegate

我有一个使用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完成(我也打印到方法结尾的日志中)。

1 个答案:

答案 0 :(得分:0)

将初始化代码移动到app委托中的单独方法中,然后从表视图控制器的-viewDidLoad方法中调用该方法。

确保只初始化一次,无论调用初始化方法多少次。