我的应用程序中有一个表格视图,显示了一些项目。当我点击一个项目时,会出现一个新的表格视图(带有导航控制器:推送)。因此,在Table视图的顶部,现在有一个带有自动“后退”箭头的导航控制器可以返回。我在右侧启用了“编辑”按钮。
现在我希望当我点击编辑按钮时,后退按钮应该消失,并且应该有一个“+”添加按钮而不是后退按钮。这可能吗? 或者可以同时在屏幕上显示“编辑”和“添加”按钮?
感谢
答案 0 :(得分:7)
这很容易。覆盖视图控制器的setEditing:animated:
方法。切换编辑/完成按钮时会调用此方法(假设您使用的是editButtonItem
中的标准UIViewController
)。
在此方法中,您可以创建一个“添加”按钮,并将其设为左侧栏按钮项。这将隐藏后退按钮。删除“添加”按钮,后退按钮将重新出现。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
if (editing) {
// Add the + button
UIBarButtonItem *addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAction:)];
self.navigationItem.leftBarButtonItem = addBtn;
} else {
// remove the + button
self.navigationItem.leftBarButtonItem = nil;
}
}
答案 1 :(得分:2)
是的,这是我使用的方法:
为后退按钮和添加按钮设置属性并将其设置在viewDidLoad中:
self.backButton = self.navigationItem.leftBarButtonItem;
self.addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPressed:)];
现在您只需交换按钮并在按下“编辑”时相应地更新TableView状态。在这里,我还将“编辑”按钮更改为“完成”:
- (IBAction)editBarButtonPressed:(UIBarButtonItem *)sender {
if (self.tableView.editing == NO) {
UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(editBarButtonPressed:)];
self.navigationItem.rightBarButtonItem = myButton;
[self.tableView setEditing:YES animated:YES];
[self.navigationItem setLeftBarButtonItem:self.addButton animated:YES];
} else {
UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editBarButtonPressed:)];
self.navigationItem.rightBarButtonItem = myButton;
[self.tableView setEditing:NO animated:YES];
[self.navigationItem setLeftBarButtonItem:self.backButton animated:NO];
}
}
希望这能回答你的问题。 :) br denrase
答案 2 :(得分:0)
后退箭头按钮是导航控制器按钮。因此,如果您想要消失相同的按钮,那么您必须在下面编写以下代码: -
self.navigationItem.hidesBackButton=YES;
现在,如果您想在导航控制器上添加自定义按钮,请使用以下代码: -
UIBarButtonItem *customButton =
[[UIBarButtonItem alloc]
initWithTitle:@"Add"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(yourMethod:)];
self.navigationItem.rightBarButtonItem = customButton;
答案 3 :(得分:0)
您可以在表格视图开始编辑时以编程方式隐藏后退按钮,然后添加"添加"导航栏左侧的按钮。
[self.navigationItem setHidesBackButton:YES];
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonPressed)];
[self.navigationItem setLeftBarButtonItem:addButton];
然后,当用户按下Done时,替换" Add"按钮带有后退按钮:
[self.navigationItem setHidesBackButton:NO];
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;