我有一个简单的表视图,当用户点击一行时,可以转换到update-view-contoller来编辑该行。问题:当表视图处于“编辑模式”时,我想转到update-view-contoller,否则不会发生任何事情。
我正在使用Storyboard创建将原型单元链接到update-view-controller的segue。
如果表视图处于“编辑模式”,如何使segue工作?
这是我对segue代码的准备,当用户点击表视图控制器中的一行时调用该代码。我的segue有一个名为“ShowUpdate”的标识符:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"ShowUpdate"]) {
UpdateViewController *updateviewcontroller = [segue destinationViewController];
NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow];
int row = [myIndexPath row];
NSString *selectedRow = [NSString stringWithFormat:@"%d", row];
updateviewcontroller.DetailModal = @[_Title[row], _Description[row], selectedRow];
}
}
感谢您的帮助
答案 0 :(得分:2)
如果检查tableView的isEditing
属性是否简单?
@property(nonatomic, getter=isEditing) BOOL editing
我不是从原型单元格中创建一个segue,而是从ViewController本身拖动它,然后在didSelectRowAtIndexPath:
委托方法中检查上面的属性,并从那里执行代码中的segue。
另外,您需要在viewDidLoad中的某处设置allowSelectionDuringEditing属性。
self.tableView.allowsSelectionDuringEditing = YES;
代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.tableView.isEditing) {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[self performSegueWithIdentifier:@"ShowUpdate" sender:cell];
}
}
Segue construction: