绅士
我需要一些帮助。几乎就像我知道我要做什么,但是编码时我一直无法使它工作。场景是我有一个带有表视图的视图控制器。我的表格视图具有三个不同的动态原型,因为我具有三种不同类型的单元格。现在,我要做的就是指定要在哪一行中生成哪个原型单元。我还在情节提要中为每个原型单元提供了唯一的标识符。
我理解事情的方式是,我的cellforRowatIndexpath方法需要了解要在该行中显示哪种单元格,然后按原样选择标识符,出队并根据需要设置内容。
相应地,这是我要执行的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath * )indexPath
{
if(indexPath.row==0)
{
static NSString *CellIdentifier = @"HelloCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// configure your cell here...
return cell;
}
}
不幸的是,事情无法按计划进行,我的应用崩溃了,
2013-02-07 16:47:39.859 ProjectsABC30068:c07] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[[NSIndexPath setTableViewStyle:]:无法识别的选择器发送到实例0x83812e0'错误。
这样的表视图没有问题,因为我已经正确设置了数据源并进行了委托。并为表格视图制作了一个插座。
我还尝试将cellforRowAtIndexPath中的if语句更改为if(myTable.indexPathForSelectedRow == 0)。这将在所有单元中生成动态原型,但至少该应用不会停止。
你们认为这是什么问题?
我不知道如何正确使用索引路径,如果有人可以帮助我,我将不胜感激。
最佳答案
您说它正在报告:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[NSIndexPath setTableViewStyle:]:无法识别的选择器已发送至实例0x83812e0
当cellForRowAtIndexPath
没有返回有效的UITableViewCell
时,您会收到此消息。
您从tableView:numberOfRowsInSection:
返回了什么值?我问的原因是您的cellForRowAtIndexPath
对于除第一行以外的任何行都将失败。如果tableView:numberOfRowsInSection:
的值大于1,则您的应用将崩溃。
为了确认这一点,您可能想检查indexPath
开头是什么cellForRowAtIndexPath
,方法是在方法的开头添加以下行:
NSLog(@"%s: section = %d; row = %d", __FUNCTION__, indexPath.section, indexPath.row);
这样,您可以确保要为哪些行生成单元格并正确处理它。
后来你说:
我还尝试将cellforRowAtIndexPath中的if语句更改为if(myTable.indexPathForSelectedRow == 0)。这将在所有单元中生成动态原型,但至少该应用不会停止。
那绝对是行不通的,这意味着对
cellForRowAtIndexPath
的工作方式感到困惑。它与当前选定的单元格无关。您通过告诉numberOfSectionsInTableView
和tableView:numberOfRowsInSection:
可以创建哪些单元格来做出响应,然后iOS将为给定的每个单元格重复调用cellForRowAtIndexPath
,它确定在给定的节数和行数下可能可见的每个单元格。确保
numberOfSectionsInTableView
和tableView:numberOfRowsInSection:
方法仅返回在cellForRowAtIndexPath
中正确处理的值。为了进一步阅读,建议您阅读Table View Programming Guide for iOS或Google的“UITableView教程”。
关于ios - 多个动态原型(prototype)单元的索引路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14764676/