如何更改UINavigationBar中的UIBarButtonItem

Phi*_*lak 8 iphone cocoa-touch objective-c uikit

我正在尝试设置可以编辑的项目列表.我有一个主视图,顶部有一个UINavigationBar,下面有一个UITableView.我想在点击时将"编辑"按钮更改为"完成"按钮,但我无法弄清楚如何操作.

如果我可以在代码中完成它(不是它的界面构建器),我可以替换它,但我甚至不能这样做.我见过一些使用[self.navigationItem]的代码,但在我看来,self是一个UIView.

当我不想导航时(这只是一页),使用UINavigationBar也感觉有点奇怪,但我想要一个带有标题和按钮的工具栏,所以我认为没有选择.

wal*_*wal 16

我创建了一个可以从编辑更改为完成的按钮.这是来自更多iPhone开发书的一个提示.

- (void)viewDidLoad {
    [super viewDidLoad];

    UIBarButtonItem *editButton = self.editButtonItem;  
    [editButton setTarget:self]; 
    [editButton setAction:@selector(toggleEdit)]; 
    self.navigationItem.leftBarButtonItem = editButton; 
}
Run Code Online (Sandbox Code Playgroud)

和方法toggleEdit

- (IBAction)toggleEdit { 
    BOOL editing = !self.tableView.editing; 
    self.navigationItem.rightBarButtonItem.enabled = !editing; 
    if (editing) {
        self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
        //Added in the edition for this button has the same color of the UIBarButtonSystemItemDone
        self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;
    } else {
        self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
        //Added in the edition for this button has the same color of the UIBarButtonSystemItemDone
        self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStylePlain;
    }
    [self.tableView setEditing:editing animated:YES]; 
} 
Run Code Online (Sandbox Code Playgroud)

然后你不需要更换任何一个.