的编辑控制我推翻方法:改变一个UITableViewCell
- (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的Contacts应用程序中,除了它从UITableViewCellEditingStyleNone
而不是UITableViewCellEditingStyleInsert
转换为相同的确切行为。这可以通过编辑联系人,然后在最后一个手机字段中输入一个数字(即添加一个新的电话号码)来看到:当前行获得一个减号按钮,并在其下面添加一个新行。
有没有找到一个更好的解决方案呢?它是从左侧开始动画的东西,无论是 - 符号还是在本例中,用于清除单元格中文本字段内容的(x)。再加上在表格中的某些东西上运行prepareForReuse看起来很可怕。 – smparkes 2011-06-03 01:11:33
cf http://stackoverflow.com/questions/5622431/update-editing-style-of-uitableviewcell-depending-on-contents – smparkes 2011-06-03 02:02:35