我有一个来自.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的内容,一切都是正确的。
答案 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
。