web-dev-qa-db-ja.com

performSegueWithIdentifierを理解する

誰かが私のためにperformSegueWithIdentifier:sender:を説明するよりも知識がありますか?ビュー(およびクラス)を切り替えて、いくつかのNSStringとIDをそのビューのクラスに引き継ぐ必要があります。 performSegueWithIdentifier:sender:でこれが可能かどうか疑問に思っていました

ありがとう!

50

まず、ストーリーボードでセグエを設定する必要がありますおよび適切な識別子を指定してください。 (セグエ(左パネル)をクリックしてから、属性(右パネル)をクリックします。

次に、これをストーリーボードのボタンまたはテーブル行の選択にリンクするか、performSegueWithIdentifier:sender:を使用してコードで呼び出すことができます。

この後、View ControllerにprepareForSegue:sender:メッセージが送信されます。 View Controllerサブクラスでこのメソッドをオーバーライドし、次のようにターゲットView Controllerを構成できます。

TargetViewController *targetVC = (TargetViewController*)segue.destinationViewController;
targetVC.string1 = string1;

などなど。このメソッドのsenderは、元のメソッド呼び出しでsenderとして使用するオブジェクトになります。

77
jrturton

ほとんどのセグエは、ユーザーとの対話の結果として自動的に開始されます。たとえば、ボタンからストーリーボードのシーンに接続されているセグエがある場合、ボタンをタップするとセグエが自動的に開始されます。

場合によっては、プログラムでセグエをトリガーするのが理にかなっています。ユーザーがゲームのラウンドに勝ったときに表示されるハイスコアシーンがあります。ストーリーボード自体で勝つという概念を表現する方法はないので、代わりにセグエを作成し、それに識別子を割り当て、実行時に-performSegueWithIdentifier:sender:を呼び出すことができます。

UIViewControllerのもう1つのセグエ関連メソッドである-prepareForSegue:sender:は、宛先View Controllerでカスタマイズを実行するためにオーバーライドする必要があるメソッドです。

9
retainCount

prepareForSegue:sender:destinationViewControllerを設定する機会があります:そこに必要なデータを渡します。 iOS用Cocoa Application Competencies で説明しています。

3
user23743