editingAccessoryView没有出现?

时间:2011-06-10 07:32:02

标签: iphone objective-c cocoa-touch uitableview

我正在尝试使用UITableViewController并使用自定义视图替换编辑模式按钮(通常默认为“删除”)。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     ... (other code) ...
     cell.selectionStyle = UITableViewCellSelectionStyleNone;
     cell.tag = pd.itemId;
     UIImage *indicatorImage = [UIImage imageNamed:@"indicator.png"];
     cell.editingAccessoryView = [[[UIImageView alloc] initWithImage:indicatorImage] autorelease];
     //cell.accessoryView = [[[UIImageView alloc] initWithImage:indicatorImage] autorelease];
     return cell;
}

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

当我尝试滑动时,没有任何反应。奇怪的是,如果我取消注释cell.accessoryView行,我的图像看起来很好。这让我觉得编辑设置有些错误吗?但是在网上或文档中我都无法找到这些设置应该是什么。

谢谢!

更新:啊。好的,所以我给了自己一个UITableView导航控制器的“编辑”按钮。现在我可以将所有单元格切换到编辑模式,然后出现我的附件。那么“刷一下”细胞会做什么?

库尔特

1 个答案:

答案 0 :(得分:0)

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

如果设置editingAccessoryView并希望它出现,则canEditRowAtIndexPath应返回YES。当桌子未处于编辑模式时,可以看到Plain accessoryView。但是,单元格的滑动显示删除确认按钮,这不是编辑附件视图,而是搞乱了

- (void)willTransitionToState:(UITableViewCellStateMask)state;

不调用[super willTransitionToState:state];将导致意外行为(您的单元格不会离开UITableViewCellStateShowingDeleteConfirmationMask状态)。如果您可以管理呼叫超级并且不允许单元格显示删除确认按钮,那么您就完成了。