2016-12-20 5 views
0

質問がありますoverride func prepare for segueです。私はUINavigationControllerと "fakeButtonPressed"という識別子を持つ "現在のモーダル"としてUINavに接続する別のビューコントローラからのボタンを持つテーブルビューコントローラを持っています。コンソールでoverride func prepare(segue:UIStoryboardSegue、送信者:Any?)が正しく動作しない

"unrecognized selector sent to instance 0x7f9c784018f0"

私の質問は、ボタンが押されたとき、それはエラーをスローするために、私は私のビューコントローラにこのコードを追加するときにということです。なぜそれが動作していないのか分かりません。

AddPlayerViewController> UINavigationController> AddPlayerTableViewControllerにアクセスしようとしています。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "fakeButtonPressed"{ 
     let navigationController = segue.destination as! UINavigationController 
     let controller = navigationController.topViewController as! AddPlayerTableViewController 
    } 
} 
+2

あなたは完全なエラーを表示するだけでなく、それを引き起こして行を指摘する必要があります。 – rmaddy

+0

@Dustin Leeあなたは 'navコントローラ 'に埋め込まれた' tableViewController 'に出席していますか? – aircraft

+0

はい!それは私がやろうとしていたことです。代わりにuviewcontainerをビューコントローラに置き、代わりにそのビューコントローラにuitableを埋め込みました。 –

答えて

0

Plsは、このようなあなたのストーリーボードに、ボタンのクリックアクション・プリファレンスを削除します、plsはActionイベントを削除するに見られるようにタッチアップインサイドイベントで十字ボタンをクリックし

enter image description here

上記の画像は、あなたの問題を解決します。

はい、あなたはまた、このようなセグエ方法の準備を書くことができます。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
{ 
    if segue.identifier == "fakeButtonPressed" 
    { 
     let controller = (segue.destination as! UINavigationController).viewControllers[0] as! AddPlayerTableViewController 
     controller.str = "Done..." 
    } 
} 

それとも

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
{ 
    if segue.identifier == "fakeButtonPressed" 
    { 
     let controller = (segue.destination as! UINavigationController).topViewController as! AddPlayerTableViewController 
     controller.str = "Done..." 
    } 
} 
+0

ありがとう!それを試して、それは働いた! –

関連する問題