performSegueWithIdentifier

performSegueWithIdentifier

我有一个指向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(或其他类型的控制器)即可。

ios - 如何获得导航栏按钮以进行搜索?-LMLPHP

如果要通过代码完成操作,则需要使用可以处理该操作的目标类中的方法来备份操作调用。 performSegueWithIdentifier是视图控制器的默认方法,因此我将调用另一个函数,然后再调用performSegueWithIdentifier,如下所示:

let plusButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "plusBttnTouched:")

func plusBttnTouched(sender: UIBarButtonItem) {

    performSegueWithIdentifier(identifier: "segueNameHere", sender: self)

}

这是一个更新的代码示例:

故事板:

ios - 如何获得导航栏按钮以进行搜索?-LMLPHP

码:
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/

10-08 20:51