私が説明するよりも知識のある人performSegueWithIdentifier:sender:
はいますか?ビュー (およびクラス) を切り替えて、いくつかの NSString と ID をそのビューのクラスに渡す必要があります。これが可能かどうか疑問に思っていましたperformSegueWithIdentifier:sender:
ありがとう!
私が説明するよりも知識のある人performSegueWithIdentifier:sender:
はいますか?ビュー (およびクラス) を切り替えて、いくつかの NSString と ID をそのビューのクラスに渡す必要があります。これが可能かどうか疑問に思っていましたperformSegueWithIdentifier:sender:
ありがとう!
まず、ストーリーボードにセグエを設定し、適切な識別子を与える必要があります。(セグエ (左側のパネル) をクリックしてから、[属性] (右側のパネル) をクリックします)。
次に、これをボタンまたはストーリーボードからのテーブル行の選択にリンクするか、 を使用してコードで呼び出すことができますperformSegueWithIdentifier:sender:
。
この後、View Controller にprepareForSegue:sender:
メッセージが送信されます。View Controller サブクラスでこのメソッドをオーバーライドし、ターゲットの View Controller を次のように構成できます。
TargetViewController *targetVC = (TargetViewController*)segue.destinationViewController;
targetVC.string1 = string1;
などなど。このメソッドのは、元のメソッド呼び出しでsender
として使用するオブジェクトになります。sender
ほとんどのセグエは、ユーザー操作の結果として自動的に開始されます。たとえば、ボタンからストーリーボードのシーンに接続されたセグエがある場合、ボタンがタップされると、セグエが自動的に開始されます。
場合によっては、セグエをプログラムでトリガーすることが理にかなっていることがあります。たとえば、ユーザーがゲームのラウンドに勝ったときに表示されるハイ スコア シーンがあります。ストーリーボード自体で勝利の概念を表現する方法はないため、代わりにセグエを作成し、それに識別子を割り当てて、-performSegueWithIdentifier:sender:
実行時に呼び出すことができます。
UIViewController のセグエ関連のもう 1 つ-prepareForSegue:sender:
のメソッドは、宛先ビュー コントローラーでカスタマイズを実行するためにオーバーライドする必要があるメソッドです。
prepareForSegue:sender:
を構成する機会が得られます。destinationViewController
必要なデータを渡す場所です。Cocoa Application Competencies for iOSで説明されています。
今日、URL セッションでデリゲート キューを設定していないため、 performSegueWithIdentifier: not execution の問題に遭遇しました。
したがって、万が一、URLSession を作成するときに実際にデリゲート キューを設定しているかどうかを確認してください。そうでない場合、URLSession はそれ自体を作成します。
urlSession = [NSURLSession sessionWithConfiguration:sessionConfigObject
delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
ここでこれについて言及するのは、URLSession 処理が何らかの UI 関連のアクティビティを呼び出すことになることがよくあるからです。そして、performSegue はメインで実行する必要があります。そうしないと、何もしません。