我的编辑按钮位于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,编辑等等。
答案 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)
如果不这样做,我需要手动启用行编辑,如:
// 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。
中的最后一个要点