Я не знаю, сколько UITableViews я сделал в своей жизни. Сотни. Но это мой первый с нуля на iOS8, и все, кажется, изменилось.iOS8 настольный вид с несколькими разделами сбой - что касается авторазмера?
Я строю свой слой представления с фиктивными данными, и я не могу сделать многосегментную таблицу работы вообще. Он падает с ошибкой, которую я покажу ниже.
В StoreListController.m:
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.dataSource = self;
self.tableView.delegate = self;
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
self.tableView.estimatedRowHeight = 44.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.title = @"Stores";
self.customers = [NSArray arrayWithObjects:@"One", @"Two", @"Three", nil];
self.stores = [NSArray arrayWithObjects:@"Ooga", @"Booga", nil];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return [self.customers count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [self.stores count] ;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [self.customers objectAtIndex:section];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"getting myself a cell");
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
cell.textLabel.text = [self.stores objectAtIndex:indexPath.row];
return cell;
}
Если я вернусь 1
из tableView:numberOfSectionsInTableView:
, она счастливо делает мне заголовок с надписью "One", и клетку с надписью "уг" и "Booga".
Однако, если я возвращаю количество заголовков в реальном массиве магазинов, я получаю:
2014-11-12 07:50:57.234 Stanley-FIL[82428:12358084] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(
0 CoreFoundation 0x0281b946 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x024a4a97 objc_exception_throw + 44
2 CoreFoundation 0x026febd2 -[__NSArrayI objectAtIndex:] + 210
3 UIKit 0x018e9bfc -[UITableViewDataSource tableView:heightForHeaderInSection:] + 50
4 UIKit 0x01631139 -[UITableViewController tableView:heightForHeaderInSection:] + 61
5 UIKit 0x013f8449 -[UITableView _delegateWantsHeaderForSection:] + 370
6 UIKit 0x015b7935 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 169
...
Я попытался переопределить метод UITableViewDelegate это призывающее здесь (tableView:heightForHeaderInSection:
), но тогда я получаю то же самое crash ищет heightForFooterInSection :, а затем, если я реализую это, я получаю тот же самый крах, который ищет tableView:indentationLevelForRowAtIndexPath:
.
Я НИКОГДА не должен был явно реализовывать все это раньше. Что тут происходит? Я предполагаю, что это связано с новым бизнесом, который занимается автоассоциацией, но это далеко не «авто».
EDIT: Затем я пошел и реализовал tableView:indentationLevelForRowAtIndexPath:
, и он умер с той же ошибкой, которая пыталась запустить tableView:heightForRowAtIndexPath:
! Который я думал, был весь смысл использования автосекретаря ячейки, чтобы начать с! Я думаю, что есть что-то фундаментальное, я недоразумение.