从xib文件中的操作按钮推送另一个Viewcontroller

时间:2016-10-14 11:43:55

标签: ios iphone swift xcode uiviewcontroller

我有一个来自.xib的viewcontroller。 在.xib里面有一个按钮;我想按钮将pushviewcontroller推送到另一个viewcontroller(ViewControllerPeopleNew)。

我使用了一个动作按钮:

@IBAction func _hitPeople(sender: AnyObject) {
    let mapViewControllerObejct = self.storyboard?.instantiateViewControllerWithIdentifier("peoplenew") as? ViewControllerPeopleNew
    self.navigationController?.pushViewController(mapViewControllerObejct!, animated: false)
}

但得到了一个错误:

  

信号SIGABRT
  无法识别的选择器发送到实例

我已经检查了所有关于名称标识符viewcontroller的内容,一切都是正确的。

2 个答案:

答案 0 :(得分:0)

从XIB提供的视图控制器中,您无法在代码

下使用storyboad
@IBAction func _hitPeople(sender: AnyObject) {

let storyboard = UIStoryboard(name: "storyboadname", bundle: nil)
let mapViewControllerObejct = storyboard.instantiateViewControllerWithIdentifier("peoplenew") as? ViewControllerPeopleNew
self.navigationController?.pushViewController(mapViewControllerObejct!, animated: false)
}

答案 1 :(得分:0)

永远记住,当两个视图控制器(self.storyBoard)属于同一个To and From view controllers时,您只能使用storyboard来实例化视图控制器。如果没有,那么您需要先获得对您storyboard所属的To view controller的引用。所以你需要这样做:

@IBAction func _hitPeople(sender: AnyObject) {
    let stotyboard = UIStoryboard(name: "YourStoryboard", bundle: nil)
    let mapViewControllerObejct = storyboard?.instantiateViewControllerWithIdentifier("peoplenew") as? ViewControllerPeopleNew
    self.navigationController?.pushViewController(mapViewControllerObejct!, animated: false)
}

PS:请确保您的From view controller位于导航堆栈中,即self.navigationController不是nil