当没有后退按钮时,向左侧栏按钮项添加到UINavigationController

bbr*_*ame 19 iphone objective-c uiviewcontroller uinavigationcontroller ios

我想在导航栏中添加默认的左栏按钮项.它应该仅在UINavigationController没有提供后退按钮时显示.

什么是最好的方法?

Jef*_*Jef 33

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if(navigationController.viewControllers.count != 1) { // not the root controller - show back button instead
        return;
    }
    UIBarButtonItem *menuItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemOrganize
                                                                              target:self
                                                                              action:@selector(menuItemSelected:)];   
    [viewController.navigationItem setLeftBarButtonItem:menuItem]; 
}
Run Code Online (Sandbox Code Playgroud)


Sur*_*rma 5

添加leftBarButtonItem\xe2\x80\xa6的 Swift 代码

\n\n
    let leftMenuItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "leftMenuItemSelected:");\n    self.navigationItem.setLeftBarButtonItem(leftMenuItem, animated: false);\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新

\n\n

适用于Swift 4 及以上版本

\n\n
    let leftMenuItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(leftMenuItemSelected(_:)))\n    self.navigationItem.setLeftBarButton(leftMenuItem, animated: false);\n
Run Code Online (Sandbox Code Playgroud)\n