iOS indexPath 为 nil(自定义附件图片)

Posted

技术标签:

【中文标题】iOS indexPath 为 nil(自定义附件图片)【英文标题】:iOS indexPath is nil (custom accessory image) 【发布时间】:2011-05-13 21:26:45 【问题描述】:

我已使用 Apple 的“附件”示例代码在我的表格中添加自定义附件图像。该表正确呈现图像和所有内容,但是当我单击应该将我带到 accessoryButtonTappedForRowWithIndexPath 方法的图像时,没有任何反应,因为 indexPath 由于某种原因为零。请参阅此检查 indexPath 的方法:

- (void)accessoryButtonTapped:(id)sender event:(id)event

    NSSet *touches = [event allTouches];
    UITouch *touch = [touches anyObject];
    CGPoint currentTouchPosition = [touch locationInView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
    if (indexPath != nil)
    
        [self tableView: self.tableView accessoryButtonTappedForRowWithIndexPath: indexPath];
    

【问题讨论】:

【参考方案1】:

为什么不能在UITableViewDelegate 中使用tableView:accessoryButtonTappedForRowWithIndexPath:

【讨论】:

我需要使用此方法,以便可以使用自定义附件图像(如 Apple 的“附件”示例代码中所示)。尽管在该示例代码中,Apple 使用 UITableViewController 作为具有 tableView ivar 的父类。我正在使用没有 tableView ivar 的 UIViewController 类。那么我可以为我的 UIViewController 类创建 tableView ivar 吗? 是的,如果您在 Interface Builder 中创建表,请创建一个 IBOutlet。如果您在代码中创建它,只需在头文件中声明 ivar。

以上是关于iOS indexPath 为 nil(自定义附件图片)的主要内容,如果未能解决你的问题,请参考以下文章

特定 UITableViewCell 的 indexPath 始终为 nil

iOS 7 UITableView indexpath 行属性为零

在 IndexPath 使用 reloadRows 时出现奇怪的更新:在表中

在 UITableView 中快速滚动并选择单元格时,文本字段委托将 indexPath 返回为 nil 并崩溃

iOS:dequeueReusableCellWithIdentifier 返回单元格,其中 IBOutlets 为 nil

iOS检查IndexPath是不是超出界限