2015-04-21 177 views
2

我知道这个问题之前已经被问到过,并且我发现了两个不同的代码行,它们声称在导航栏中的栏按钮项的标识符中执行更改。两者都编译,但对标识符没有任何影响。我将标识符设置为“播放”按钮启动程序,并将其更改为“暂停”按钮。我已经在viewDidLoad()和里面运行了这两行代码在导航栏栏按钮中更改按钮标识

IBAction func startButton(sender: AnyObject) { 

这是代码。谁能告诉我为什么按钮标识不变?而且,正确的按钮/左按钮看起来很明显,或者在我没有得到的代码中存在某些关于单词的内容。

self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Pause, target: self, action: "startButton:") 

self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "startButton"), animated: true) 

这是整个viewDidLoad,它也不起作用。

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Pause, target: self, action: "startButton:") 
} 

回答

0

尝试下面的代码在UINavigationBar

override func viewDidLoad()切换按钮写道

self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem:UIBarButtonSystemItem.Play, target: self, action:Selector("startButton:")) 

和按钮

@IBAction func startButton(sender: UIButton!) { 

    self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "stopButton:"), animated: true) 
} 

@IBAction func stopButton(sender: UIButton!) { 

    self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "startButton:"), animated: true) 
} 

@Bendrix创建两个@IBAction,你可以看到代码我试过my view controller code 并在模拟器中运行此代码后的视频app in simulator

+0

我试过了,它对按钮没有任何影响。我很好奇,对于一个按钮有两个不同的操作,系统将如何知道要执行哪个操作。我添加了一个bool开关,因此它应该只执行一个代码块或另一个代码块,但是我的问题是,当您按下按钮时,两个代码块都会运行?无论如何,这是行不通的。你试过了吗?在最简单的情况下,UEViewDidLoad中的单行应该更改按钮标识符(如果可以的话)。仍然需要帮助。 – Bendrix

+0

显然,我尝试过....这里有两个不同的按钮,它们各自的操作......只是将它们用作您的需要。或者你可以通过使用bool标志只用一个动作来改变按钮。 – VRAwesome

+0

我可能会感到困惑。回答文字说“并为按钮创建两个@IBAction”,并在上面的评论中说,“两个不同的按钮分别带有相应的动作”。为了澄清,那么,上面的答案有两个不同的按钮,都在leftBarButtonItem位置?你能覆盖这样的按钮吗?即使使用两个IBAction作为一个按钮,也无法在理论上来回切换控制。如果你有两个一个项目,我不知道编译器如何知道要运行哪个IBActions。如果您发布整个解决方案的代码,这将有所帮助。 – Bendrix