2

コンテキスト: A と B の 2 つの VC があります。VC A には、いくつかのボタンといくつかのラベルが含まれています。VC A のボタンを押すと、セグエは VC B/C/ などを表示します。ここで、VC A/B/C などで終了すると、セグエが巻き戻されて VC A が表示されます。VC B/C/D などのほとんどの場合、その VC のボタン (ctrl + ドラッグして「終了」アイコン) をトリガーするアンワインド メソッドを使用しています。VC A に戻ると、次のアクションが自動的に呼び出されるため、これは完璧に機能します。

- (IBAction)returned:(UIStoryboardSegue *)segue {
// Here I do some stuff 
}

問題: 現在、セカンダリ VC の 1 つ (たとえば D) では、状況が少し特殊です。この VC では、プログラムでループを介して数百のボタンを生成し、次にどのボタンが押されているかを検出し、最後に VC A に巻き戻します (特定のボタンなし; ボタンのいずれかが巻き戻しをトリガーします)。私はこれを行うことができることを知っています。

[self dismissViewControllerAnimated: YES completion: nil]

ただし、VC A に戻るとき、またはこれを使用しても、上記のアクションはトリガーされません。

[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self]

しかし、これは私が望んでいないVC Aの新しいインスタンスを生成します(VC Aのインスタンスのラベルにはすでにいくつかの情報が含まれているため)。

したがって、私が望むのは、VC D を生成した VC A の同じインスタンスに戻り、上記の「返された」アクションをトリガーできるようにすることです。したがって、「終了」アイコンに接続されたボタンを使用する場合と同じ効果を実現したいのですが、VC D の多くのボタンの 1 つが押されたときに、プログラムで「コード内」でこれを実行したいと考えています。

何かご意見は?

4

3 に答える 3

6

[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self]うまくいくはずです。アンワインド セグエは、実行方法に関係なく、宛先の新しいインスタンスを作成しません。これらは、宛先の新しいインスタンスを作成しない唯一のセグエであるという点で独特です。

于 2013-07-23T21:59:30.803 に答える
1

コントロールを押しながらシーンのビュー コントローラー アイコンから終了アイコンにドラッグすることで、プログラムで使用する unwindsegue を作成できます。この unwindseque に識別子を割り当てた後、プログラムで呼び出すことができます。

参考: https ://developer.apple.com/library/ios/technotes/tn2298/_index.html

于 2014-04-15T06:33:30.843 に答える