绅士

我需要一些帮助。几乎就像我知道我要做什么,但是编码时我一直无法使它工作。场景是我有一个带有表视图的视图控制器。我的表格视图具有三个不同的动态原型,因为我具有三种不同类型的单元格。现在,我要做的就是指定要在哪一行中生成哪个原型单元。我还在情节提要中为每个原​​型单元提供了唯一的标识符。

我理解事情的方式是,我的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的工作方式感到困惑。它与当前选定的单元格无关。您通过告诉numberOfSectionsInTableViewtableView:numberOfRowsInSection:可以创建哪些单元格来做出响应,然后iOS将为给定的每个单元格重复调用cellForRowAtIndexPath,它确定在给定的节数和行数下可能可见的每个单元格。

确保numberOfSectionsInTableViewtableView:numberOfRowsInSection:方法仅返回在cellForRowAtIndexPath中正确处理的值。

为了进一步阅读,建议您阅读Table View Programming Guide for iOS或Google的“UITableView教程”。

关于ios - 多个动态原型(prototype)单元的索引路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14764676/

10-12 17:28
查看更多