4

「タッチインサイド」ボタンイベントで閉じて新しいUIViewを開きたいMainWindowControllerがあります。私が使用するコードは次のとおりです。

NewViewController *controller = [[NewViewController alloc]
initWithNibName:@"NewView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];

しかし、このように MainWindowController はそれ自体を閉じません。

4

3 に答える 3

9

これを試してください

[self dismissViewControllerAnimated:YES completion:nil];
于 2014-04-16T09:37:14.680 に答える
1

UIViewControllerのプッシュとポップを管理するには、UINavigationControllerを使用する必要があります。UINavigationControllerでは、ルートビューコントローラーを定義する必要があります。子ビューコントローラーは、レイヤーのようにその上に追加されます。

ルートを作成して、それに子を追加することができます。ボタンを押すと、子をポップして、ルートに別の子をプッシュさせます。

アクションは次のようになります。

ルートプッシュchild1(ルートはchild1でカバーされています)

ルートポップチャイルド1(ルートが表示されます)

ルートプッシュchild2(ルートはchild2でカバーされています)

UINavigationControllerのドキュメントへのリンクは次のとおりです。

UIViewControllerからUIViewを削除する場合は、UINavigationコントローラーは必要ありません。viewControllerに2つのUIViewを作成し、ボタンを押すとそれらを入れ替えることができます。

1)スワップされたビュー(コンテナ)を保持するUIViewを作成します

2)交換するUIViewを作成します。それらを配列に入れます。

3)ボタンをアクションメソッドに接続します。このメソッドは、表示する必要のあるビューのインデックスを把握し、コンテナーのすべてのサブビューを削除し、サブビュー[viewsArray objectAtIndex:nextViewIndex]をコンテナーに追加する必要があります。

于 2011-02-14T09:59:07.487 に答える
1

「タッチアップインサイド」イベントで呼び出しているセレクター/メソッドで、使用してみてください

[self dismissViewControllerAnimated:YES completion:{
//Optional, but could be used to do something magical, once controller has been dismissed
}];
于 2011-02-14T10:07:10.263 に答える