当导航栏没有返回按钮时,向UINavigationController添加左侧按钮项

21

我想在我的导航栏中添加一个默认的左侧按钮项。当UINavigationController没有提供返回按钮时,它应该显示。

最佳做法是什么?


您的问题是最佳方法。如果没有返回按钮,则添加左侧按钮。 - rmaddy
5个回答

36
- (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]; 
}

这是来自UINavigationController的委托吗? - David Sujarwadi

5

以下是添加 leftBarButtonItem 的 Swift 代码:

    let leftMenuItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "leftMenuItemSelected:");
    self.navigationItem.setLeftBarButtonItem(leftMenuItem, animated: false);

更新

适用于Swift 4及以上版本

    let leftMenuItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(leftMenuItemSelected(_:)))
    self.navigationItem.setLeftBarButton(leftMenuItem, animated: false);

3

Swift 3版本:

let done = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(YourController.done))
navigationItem.setLeftBarButtonItem(done, animated: false)

1
对于 Swift 4.x 及更高版本(5.x):
func addNavigationItemBtn(){
    let backBtn = UIBarButtonItem.init(title: "Menu", style: .plain, target: self, action: #selector(menuAction))
    self.navigationItem.leftBarButtonItem = backBtn
}

@objc func menuAction(){
    print("menu button pressed")  //Do your action here
}

0

Swift 4

let item = UIBarButtonItem(title: "Setting", style: .done, target: self, action: #selector(setting))

 navigationItem.rightBarButtonItem = item

// then do your action in function setting 

@objc
  final func setting() {
    print("Your work here.")
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接