【发布时间】:2010-08-31 07:20:43
【问题描述】:
我重写了方法:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
使加号按钮出现在单元格旁边。用户编辑单元格的内容后,我想将其从加号按钮更改为减号按钮。逻辑已经写在这个方法中。问题是,即使调用了这个方法并且它返回了正确的值,它也不会更新按钮。
使用:
[myViewCell setNeedsLayout];
... 不会导致 [myTableView tableView:editngStyleForRowatIndexPath:] 运行。
打电话
[tableView reloadRowsAtIndexPaths: ... withRowAnimation:UITableViewRowAnimationNone];
...做了一些奇怪的事情...它导致[myTableView tableView:editngStyleForRowatIndexPath:] 在所有行上被调用,除了我在reloadRowsAtIndexPaths 参数中发送的那一行。
无论如何,由于我要插入一行,因此我的所有行都将调用该方法,包括我要更改的行。我检查了它是否返回了UITableViewCellEditingStyleDelete。尽管它返回了正确的值,但它仍然显示加号图标而不是减号图标。
拨打[tableview reloaddata] 不起作用。
UITableViewCell 上有一个editingStyle 属性,似乎可以解决我的问题,但它是只读的。
好像一旦tableView:editingStyleForRowAtIndexPath: 方法设置了editingStyle,就永远无法更改。那么,当行滚动到视图中时,为什么会不断调用这个方法呢?
如何更改 UITableViewCell 的编辑控件?
您会注意到,在 Apple 的联系人应用程序中,存在完全相同的行为,只是它是从 UITableViewCellEditingStyleNone 而不是 UITableViewCellEditingStyleInsert 转换。这可以通过编辑联系人,然后在最后一个电话字段中输入一个数字(即添加一个新电话号码)来查看:当前行有一个减号按钮,并在其下方添加一个新行。
【问题讨论】:
标签: iphone uitableview ios