Swift 3.0向导航栏添加右键

Kev*_*vin 22 button navigationbar ios swift

我在视图控制器的顶部添加了一个导航栏.我试图根据条件控制按钮是否可见,但是我在添加按钮时遇到问题.到目前为止,我有,

var addButton: UIBarButtonItem = UIBarButtonItem(title: "test", style: .done, target: self, action: #selector(addTapped))

override func viewDidLoad() {
    super.viewDidLoad()

    let boool = true
    if boool {
        self.navigationItem.rightBarButtonItem = self.addButton
    }
    else {
        self.navigationItem.rightBarButtonItem = nil
    }
}

func addTapped(sender: AnyObject) {
    print("hjxdbsdhjbv")
}
Run Code Online (Sandbox Code Playgroud)

我认为它没有正常工作,因为我已经在VC中添加了导航栏,而不是使用导航控制器并在那里使用栏.我想知道是否有办法使用此导航栏.

Man*_*son 48

这很简单.把这行代码放到viewDidLoad:

self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "test", style: .done, target: self, action: #selector(addTapped))
Run Code Online (Sandbox Code Playgroud)

  • 适用于Swift 4 (2认同)

Urv*_*odi 8

let rightBarButtonItem = UIBarButtonItem.init(image: UIImage(named: "EditImage"), style: .done, target: self, action: #selector(ViewController.call_Method))

self.navigationItem.rightBarButtonItem = rightBarButtonItem
Run Code Online (Sandbox Code Playgroud)


Kyl*_*e H 5

您说您是UINavigationBar通过情节提要添加了一个到视图控制器的,但是查看您提供的代码,IB中的导航栏没有插座连接。

为了访问self.navigationItem您的视图控制器,必须将其嵌入UINavigationController或作为层次结构的一部分。除非您需要在单个视图控制器上使用自定义导航栏,否则建议将其从Interface Builder中删除,然后确保将所讨论的视图控制器嵌入UINavigationController或从另一个控制器推送到导航堆栈中,嵌入到导航控制器中,然后您应该会看到UIBarButtonItem

  • 将视图控制器嵌入到导航控制器中,可以使您在界面生成器中具有清晰布局的导航堆栈,并且对于该导航堆栈中的每个视图控制器,您都可以访问相同的导航栏。取而代之的是,您将一个导航栏添加到视图控制器,然后必须在将另一个导航栏添加到下一个视图控制器时分别管理每个导航栏。 (2认同)