我覆盖了方法:
- (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
,就永远无法更改。那么,为什么当行滚动到 View 中时会不断调用此方法?
如何更改 UITableViewCell 的编辑控件?
您会注意到在 Apple 的联系人应用程序中,存在完全相同的行为,除了它是从 UITableViewCellEditingStyleNone
而不是 UITableViewCellEditingStyleInsert
转换。这可以通过编辑一个联系人,然后在最后一个电话字段中键入一个数字(即添加一个新的电话号码)来看到:当前行有一个减号按钮,并且在它下面添加了一个新行。
最佳答案
我在我的应用程序中的两个地方遇到了类似的问题。我找不到在编辑时更改或更新单元格的 editingStyle 的方法,它开始让我发疯。
我有一个单元格,我想在用户输入内容时添加减号,而另一个单元格我想在用户单击该单元格并将其转换为有效字段时删除加号。
我最终通过调用解决了这两个问题
- (void) prepareForReuse;
在有问题的单元格上。我不认为这是一个优雅的解决方案,但它以某种方式起作用。如果我在开始编辑之前调用此方法,它会导致一些奇怪的动画故障,但如果我在更新底层数据结构之后调用它,并且在 tableView beginUpdates
和 tableView endUpdates
中,它会完美地动画对于我想添加减号的情况。
在我的第二种情况下,通过在空的 tableView beginUpdates
和 tableView endUpdates
序列之前调用此方法,在没有动画的情况下删除了加号。它看起来有点突兀,但只要功能存在,我就可以接受。
关于iphone - 更改 UITableViewCell 的编辑控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3606848/