editButtonItem设置但没有减号按钮?

时间:2009-05-25 09:27:28

标签: iphone objective-c cocoa-touch

我的编辑按钮位于viewDidLoad:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

它在导航栏上正确显示,点击此按钮确实将其更改为完成。但是,我的表格行中没有显示减号按钮。然后点击一行,然后点按“删除工作”。

有什么想法吗?

编辑1:以下是我的工作方式:

- (void)loadView {
tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
tableView.delegate = self;
tableView.dataSource = self;
tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

self.view = tableView;
}

编辑2:我的观察是,如果在IB(RootViewController)中创建了我的tableview,则编辑和减号按钮显示正常。另外两个(或三个)tableview是由前面的代码创建的,因此可能是问题所在。猜猜我不得不潜入isEditing,编辑等等。

5 个答案:

答案 0 :(得分:39)

如果你没有UITableViewController的子类,有一种方法可以做到。只需在你的UIViewController子类中实现setEditing:animated:如下:

- (void) setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing: editing animated: animated];
    [self.tableView setEditing:editing animated:animated];
}

注意:如果需要,请替换“self.tableView”...

同时将“编辑”按钮添加到工具栏:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

就是这样!

答案 1 :(得分:11)

傻傻的我。我忘了将UIViewController(我的视图控制器继承的类)更改为UITableViewController。现在,它有效。

如果不这样做,我需要手动启用行编辑,如:

// in loadView
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)];

- (void)turnOnEditing {
[self.navigationItem.rightBarButtonItem release];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(turnOffEditing)];
[self.tableView setEditing:YES animated:YES];
}

- (void)turnOffEditing {
[self.navigationItem.rightBarButtonItem release];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)];
[self.tableView setEditing:NO animated:YES];
}

答案 2 :(得分:2)

要显示并激活每个tableviewcell左下角的减号按钮,请执行以下操作:

将以下代码添加到viewdidload方法中:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

//上面一行是显示导航栏右上角的“编辑”和“完成”按钮。

并将以下方法添加到.m文件中,以显示和查看tableview单元格上的MINUS符号。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
 {
    [super setEditing:editing animated:animated];

    if(editing == YES) {

    [self.tableView setEditing:editing animated:animated];

     } else {

    [self.tableView setEditing:NO animated:animated];

     }

}

答案 3 :(得分:0)

您可能需要这样做:

self.tableView = tableView;

在您的loadView方法中。这是UITableViewController操作的属性,如果您从NIB加载视图,它将自动设置。由于您以编程方式创建视图,因此需要明确设置它。

答案 4 :(得分:0)

我遇到了同样的问题。根据UITableViewController的文档,它读取:UITableViewController实现了超类方法setEditing:animated:这样如果用户点击导航栏中的Edit | Done按钮,控制器就会切换表格的编辑模式。

请参阅UITableViewController doc。

中的最后一个要点