Apple iOS5 и сделал FinishLaunchingWithOptions - PullRequest
0 голосов
/ 17 октября 2011

У меня есть приложение для iPhone, которое использует UITableViewController для отображения таблицы на экране. Данные таблицы (и другие данные, используемые приложением) инициализируются на: didFinishLaunchingWithOptions: методе моего делегата приложения. Приложение отлично работает на iOS4. На iOS5 данные таблицы не загружаются. Я проверил и обнаружил, что метод didFinishLaunchingWithOptions: теперь вызывается параллельно с отображением представления. По этой причине при получении размера таблицы я перехожу к моему делегату приложения, который по-прежнему не загружает данные таблицы и поэтому возвращает «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 голосов
/ 17 октября 2011

Переместите код инициализации в отдельный метод в вашем делегате приложения, а затем вызовите этот метод из -viewDidLoad метода вашего контроллера табличного представления.

Убедитесь, что вы инициализируете только один раз, независимо от того, сколько раз вызывается ваш метод инициализации.

...