2009-05-25 37 views
7

我编辑按钮放置在viewDidLoad中:editButtonItem设置但没有减号按钮?

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,编辑和whatnot。

+1

什么是你重载?它只是一个普通的'UITableViewController?您的UITableViewCells是否做了任何奇怪的事情(子类或其他)?在返回可编辑类型的行时,你在视图控制器中做了什么有趣的事情? – 2009-05-25 14:37:36

+0

是的,这只是普通的UITableViewController。我会通过添加一些代码来澄清我的帖子。 – 2009-05-25 19:17:32

回答

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]; 
} 
0

你可能需要做的:

self.tableView = tableView; 

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

+0

有没有必要这样做。要记住的最重要的事情是将父类从UIViewController更改为UITableViewController。 – 2009-05-25 19:56:39

38

如果不继承的UITableViewController,有一种方法可以做到这一点。只实现setEditing:动画:在UIViewController子类,如下所示:

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

注:如果需要更换 “self.tableView” ...

还添加了 “编辑” buttonto工具栏:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

就这样!

0

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

请参阅UITableViewController文档中的最后一个要点。

1

显示和在每个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]; 

    } 

}