Это не подтверждено, но держу пари, что когда вы звоните selectRowAtIndexPath:animated:scrollPosition:
из selectFirstRow
, он вызывает UITableView
делегата -tableView:numberOfRowsInSection:
.
По сути, у вас бесконечная рекурсия. tableView:numberOfRowsInSection
звонит selectFirstRow
, звонит selectRowAtIndexPath:animated:scrollPosition:
, звонит tableView:numberOfRowsInSection
до бесконечности.
Вам необходимо перевести selectFirstRow
звонок на viewDidAppear
или viewWillAppear
. tableView:numberOfRowsInSection:
не место для выполнения чего-либо сложного ... это называется ОЧЕНЬ ОЧЕНЬ часто.
И пока вы это делаете, переместите логику, которая проверяет количество элементов, в selectFirstRow. т.е.
if (self.ichronoAppointments.count) {
//select the first row
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
} else {
//don't
NSLog(@"Couldn't select first row. Maybe the data is not yet loaded?");
}
Таким образом, он более СУХОЙ / модульный / чище.