我不知道我生命中有多少UITableViews。数百人。但这是我在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"的标题,以及标有" Ooga"和#34; 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:
),但是我遇到了同样的崩溃,寻找的是heightForFooterInSection:然后如果我实现了这个,我会遇到同样的崩溃为tableView:indentationLevelForRowAtIndexPath:
。
我从来没有必须明确地实施所有这些东西。这里发生了什么?我认为它与新的细胞自动调节业务有关,但这远远不是" auto" ....
编辑:然后我继续执行tableView:indentationLevelForRowAtIndexPath:
并且因为尝试运行tableView:heightForRowAtIndexPath:
时遇到了同样的错误!我认为这是开始使用表格单元格自动调整的重点!我认为,存在一些我误解的根本原因。
答案 0 :(得分:0)
您确定将self.tableView与.xib中真正的一个表相关联吗? 我只在你的代码中添加了这个,它对我来说很完美(iOS 8.1):
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44.0;
}