我有一个 TableView,我想在编辑为 true 时更改为不同的视图 (View1) 来编辑该行的数据。当编辑不正确时,我使用 didSelectRowAtIndexPath 更改为不同的视图(View2),从选定的行加载信息。
例如,如果您转到内置时钟选择闹钟,选择编辑,然后选择一个闹钟(假设您至少有一个),然后您将被带到编辑闹钟屏幕,但前提是您处于编辑状态。
所以我的问题是如何在编辑时复制此功能。
在您的 UITableViewDelegate 中有一个可选方法:
tableView:willBeginEditingRowAtIndexPath:
此方法仅在用户滑动单元格时通知您。要通过任何其他方法(即按下按钮)知道您处于编辑模式,您可以使用:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Editing");
isEditing = YES;
return UITableViewCellEditingStyleDelete;
}
请注意,您必须返回 UITableViewCellEditingStyle,在大多数情况下,这将是 UITableViewCellEditingStyleDelete。另请注意,这是为每个单元格调用的,因此如果您只想检查您是否处于编辑模式(而不是被通知),您可以使用:
[tableView isEditing]
至于知道您是否处于编辑模式,UITableView
有一个属性editing
可以做到这一点,以及一个适当的动画 setter。(如果您使用正确的按钮类型,系统还将根据此状态切换您的编辑/完成按钮。)
您可以跟踪您当前是否处于编辑模式,单击编辑按钮使您进入编辑模式,单击取消使您退出编辑模式。
进入编辑模式时,使用取消按钮在导航栏上按下另一个导航项,离开编辑模式时弹出导航项。
根据您是否处于编辑模式,单元格可以显示不同的内容。当切换进入或退出编辑模式重新加载表格数据时,会导致不同的显示。
didSelectRowAtIndexPath 可能有不同的行为,具体取决于您是否处于编辑模式。如果在编辑模式下单击单元格,则会打开您的编辑视图,如果不是在编辑模式下,则更改为您的 View2。