我有一个指向UIViewController的UINavigationController。在该UIViewController中,我希望Navigationitem的右键为.Add UIBarButtonItem,它与另一个名为“nextScene”的场景连接。
据我了解,如果我想以编程方式创建此segue,则需要使该操作成为“performSegueWithidentifier”方法。这是我所拥有的:let plusButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "performSegueWithIdentifier:")
self.navigationItem.setRightBarButtonItem(plusButton, animated: true)
到达另一个称为“nextScene”的场景的正确语法是什么?我的performSegueWithidentifier方法应如何处理呢?
编辑:
收到以下错误:无法识别的选择器发送到实例... 2015-08-06 07:57:18.534 .. [...] ***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[.. 。goToSegue:]:无法识别的选择器已发送到实例。
这是我用于segue的代码:
let plusButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "goToSegue:")`
self.navigationItem.setRightBarButtonItem(plusButton, animated: true) }
func goToSegue() {
performSegueWithIdentifier("segueName", sender: self)
}
最佳答案
您只需控制+从StoryBar中的UIBarButtonItem拖动到UIViewController(或其他类型的控制器)即可。
如果要通过代码完成操作,则需要使用可以处理该操作的目标类中的方法来备份操作调用。 performSegueWithIdentifier是视图控制器的默认方法,因此我将调用另一个函数,然后再调用performSegueWithIdentifier,如下所示:
let plusButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "plusBttnTouched:")
func plusBttnTouched(sender: UIBarButtonItem) {
performSegueWithIdentifier(identifier: "segueNameHere", sender: self)
}
这是一个更新的代码示例:
故事板:
码:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Create bar button item
let plusButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Action, target: self, action: Selector("plusBttnTouched:"))
self.navigationItem.rightBarButtonItems = [plusButton]
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: - Actions
func plusBttnTouched(sender: UIBarButtonItem) {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.performSegueWithIdentifier("plusViewController", sender: self)
})
}
}
在方法参数中使用发送器可让您访问方法中已定义类型的实例。当您在选择器的末尾添加:时,您说要这样做,这不是必需的。
关于ios - 如何获得导航栏按钮以进行搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31845915/