2016-10-14 12 views
0

私は.xibから提示するViewControllerを持っています。 .xibの中にボタンがあります。私はボタンをpushviewcontrollerに他のviewcontroller(ViewControllerPeopleNew)にします。別のViewControllerをxibファイルのアクションボタンから押してください

私はアクションボタンを使用します。

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

しかし、エラーが発生しました:

Signal SIGABRT
unrecognized selector sent to instance

私はすでに名前識別子のViewControllerについてのすべてをチェックし、すべての権利です。

+0

navigationControllerを印刷して、nullでないことを確認してください。 –

+2

_で関数名を開始しないでください。 – matt

+2

まず、xibからインスタンス化されたビューコントローラは、どのストーリーボードにも属していません。それは自己です.storyboardはnilです。これは、ストーリーボードからView Controllerをインスタンス化できないことを意味します。 – Adeel

答えて

0

あなたがコード

@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) 
} 
0

以下storyboadの使用は常にビューコントローラ(To and From view controllers)の両方が同じに属しているときにのみ、ビューコントローラをインスタンス化するself.storyBoardを使用できることを覚えて取得することはできませんXIBで存在ビューコントローラからstoryboard。そうでない場合は、To view controllerに属しているstoryboardへの参照を取得する必要があります。

@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.navigationControllernilではありませんので、あなたはこれを実行する必要があります。

関連する問題