8

在经历了这个问题的每一个 stackoverflow 解决方案之后,它仍然对我不起作用。

//UIBarButtonItem declaration
UIBarButtonItem* button1 = [[UIBarButtonItem alloc] initWithTitle:@"Button Text" 
style:UIBarButtonItemStyleBordered target:self action:@selector(myAction)];

//method 1
[self setToolbarItems:[NSArray arrayWithObjects: button1, nil] animated:YES];

//method 2
[self.navigationController.toolbar setItems:[NSArray arrayWithObject:button1]];

//method 3
self.navigationController.toolbarItems = [NSArray arrayWithObject:button1];

//displaying toolbar
[self.navigationController setToolbarHidden:NO];

上述方法均不适用于在工具栏上显示按钮 - 我得到的只是一个空白工具栏。我在这里有什么明显的遗漏吗?

4

4 回答 4

5

移动

//UIBarButtonItem declaration
UIBarButtonItem* button1 = [[UIBarButtonItem alloc] initWithTitle:@"Button Text" 
style:UIBarButtonItemStyleBordered target:self action:@selector(myAction)];

//method 1
[self setToolbarItems:[NSArray arrayWithObjects: button1, nil] animated:YES];

//displaying toolbar
[self.navigationController setToolbarHidden:NO];

这就是viewDidAppear:(BOOL)animatedUINavigationController 获取它管理的 UIViewController 的工具栏项的地方。

于 2013-09-13T08:51:43.153 回答
3

采用

self.toolbarItems=[NSArray arrayWithObject:button1]
于 2013-09-13T08:09:05.787 回答
1

在 Swift 3 / iOS 10 中,在最简单的情况下,您的导航控制器将只包含一个视图控制器,您可以使用下面的代码来显示您的视图控制器,其中包含一个包含条形按钮项的工具栏:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Show navigation controller’s built-in toolbar
        navigationController?.setToolbarHidden(false, animated: false)

        // Set the view controller toolbar items
        let items = [UIBarButtonItem(title: "Button Text", style: .plain, target: nil, action: nil)]
        setToolbarItems(items, animated: false)
    }

}

但是,如果您计划在导航控制器的堆栈中包含多个视图控制器,则必须调用'UINavigationController方法setToolbarHidden(_:animated:)才能正确显示或隐藏导航控制器的内置工具栏:viewWillAppear()viewWillDisappear()

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set the view controller toolbar items
        let items = [UIBarButtonItem(title: "Button Text", style: .plain, target: nil, action: nil)]
        setToolbarItems(items, animated: false)
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        // Show navigation controller’s built-in toolbar
        navigationController?.setToolbarHidden(false, animated: false)
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        // Hide navigation controller’s built-in toolbar
        navigationController?.setToolbarHidden(true, animated: false)
    }

}
于 2017-05-01T19:22:05.313 回答
0

对于那些寻找Swift版本的人,试试这个:

let someVC: UIViewController = ...
let someButton: UIBarButtonItem = ...
someVC.setToolbarItems([someButton], animated: true)

UINavigationController.toolbar属性文档明确阐明了应该使用哪个 API 来设置工具栏项:

此工具栏内容的管理是通过与此导航控制器关联的自定义视图控制器完成的。对于导航堆栈上的每个视图控制器,您可以使用.setToolbarItems:animated:UIViewController

-- UINavigationController 类参考

于 2016-04-21T15:15:37.927 回答