Iphone UITableView编辑不工作
我有一个按钮(UINavigationBarItem)用于编辑我的UITableView,它只允许删除。所以当我按delete键时,每个单元格旁边会出现一条小红线,我可以删除每一行 按下按钮时,调用以下功能:Iphone UITableView编辑不工作,iphone,ios,uiviewcontroller,Iphone,Ios,Uiviewcontroller,我有一个按钮(UINavigationBarItem)用于编辑我的UITableView,它只允许删除。所以当我按delete键时,每个单元格旁边会出现一条小红线,我可以删除每一行 按下按钮时,调用以下功能: -(void)editButtonSelected:(id)sender { if(self.editing) NSLog(@"self.editing = true"); else NSLog(@"self.editing = false
-(void)editButtonSelected:(id)sender {
if(self.editing)
NSLog(@"self.editing = true");
else
NSLog(@"self.editing = false");
if(self.editing) {
[super setEditing:NO animated:NO];
[tableView setEditing:NO animated:NO];
[tableView reloadData];
[leftButton setTitle:@"Delete"];
[leftButton setStyle:UIBarButtonItemStylePlain];
self.editing = false;
}
else {
[super setEditing:YES animated:YES];
[tableView setEditing:YES animated:YES];
[tableView reloadData];
[leftButton setTitle:@"Done"];
[leftButton setStyle:UIBarButtonItemStyleDone];
self.editing = true;
}
}
而且效果很好。但只是暂时的。一旦我引入一个新的UIViewController,然后关闭该控制器,这个删除功能就无法在我的主屏幕上工作。在将新的UIViewController置于顶部之前,它可以正常工作。按钮本身工作正常,self.editing的值可以在true和false之间正确切换,但小红线不会显示。为什么会发生这种情况?我猜UINavigationBarItem上的目标仍然设置为第一个视图控制器,而不是被推到堆栈上的后续视图控制器。为什么要调用
[super-setEditing:animated:///code>,然后调用self.editing=/*…*/代码>。Self的实现应该自动调用super。这可能不是问题所在。你能再详细解释一下吗?我该如何解决这个问题?当您创建UINavigationBarItem(以编程方式或IB方式)时,您正在设置一个目标(您的第一个视图控制器)和一个选择器(editButtonSelected:在本例中)。如果不将该目标更改为在导航堆栈上推送的任何新视图控制器,它仍将调用主视图控制器上的editButtonSelected:方法。但我希望它这样做。我希望主视图控制器(具有UITableView)显示小红线。我想我现在更了解了。在按下一个新的视图控制器,然后弹出该视图控制器之后,编辑逻辑不再工作。在我再次尝试回答之前,我需要查看更多代码,特别是您如何创建UINavigationBarItem以及如何推送和弹出辅助UIViewController。结果证明[tableView reloadData]调用不起作用。没有调用所有tableview方法。不知道为什么?