Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableView编辑不工作_Iphone_Ios_Uiviewcontroller - Fatal编程技术网

Iphone UITableView编辑不工作

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

我有一个按钮(UINavigationBarItem)用于编辑我的UITableView,它只允许删除。所以当我按delete键时,每个单元格旁边会出现一条小红线,我可以删除每一行

按下按钮时,调用以下功能:

-(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方法。不知道为什么?