モーダル セグエを正しく使用していません。実装した方法では、元のインスタンスに戻るのではなく、セグエ時に各View Controllerの新しいインスタンスを作成しています。そのため、メモリ使用量が増え続けています。
iOS 6 より前では、これを処理する正しい方法は次のとおりでした。
viewController2Done
1)ビュー コントローラ 1のようにメソッドを定義します
。2) ビュー コントローラ 2 で、delegate
タイプというプロパティを作成しますid
。
3) in prepareToSegue
for View Controller 1、delegate
View Controller 2 ~self
4) に設定、View Controller 2 で、View Controller 1 に戻る時間になったら呼び出し[delegate viewController2Done]
5) in viewController2Done
call[self dismissModalViewControllerAnimated:YES]
この方法は iOS 6 でも機能しますが、unwind segue
代わりに使用できる新しい方法もあります。これを使用するには、View Controller 1 で次のようにメソッドを定義します。
目的 C:
- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
NSLog(@"and we are back");
}
迅速:
@IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) {
print("and we are back")
}
次に、ビュー コントローラー 2 のボタンから、ストーリーボードのビュー コントローラーの上のバーにあるオレンジ色の終了アイコンへのドラッグを制御します。ポップアップで、選択unwindFromViewController2
してほら、完了です。