editButtonItem设置但没有减号按钮?

Anh*_* Do 7 iphone cocoa-touch objective-c

我的编辑按钮放在viewDidLoad中:

self.navigationItem.rightBarButtonItem = self.editButtonItem;
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

编辑1:这是我正在做的事情:

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

self.view = tableView;
}
Run Code Online (Sandbox Code Playgroud)

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

小智 39

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

- (void) setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing: editing animated: animated];
    [self.tableView setEditing:editing animated:animated];
}
Run Code Online (Sandbox Code Playgroud)

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

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

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
Run Code Online (Sandbox Code Playgroud)

就这样!


Anh*_* Do 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];
}
Run Code Online (Sandbox Code Playgroud)