UIViewControllerオブジェクトのコレクションを閉じるのに問題があります。ロードされたすべてのモーダルUIViewControllerオブジェクトを一度に閉じるエレガントな方法を知りません。
Xcode 4の「ストーリーボード」を使用していますが、画面のマッピングにSeguesを使用していません。私は次のように動的コードを使用します:
それはすべてMainViewController.mから始まります。[myMenuController](メニューリスト)をロードします。ユーザーがメニューからオプションを選択すると、[myTicketController]がロードされます。そこでユーザーが操作した後、[myNextController]が読み込まれ、パターンが表示されます。いくつかのUIViewControllerを動的にロードします(ここではセグはありません):
//from MainViewController.m - Load the main menu
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
myMenuController = (MyMenuController *)[storyboard instantiateViewControllerWithIdentifier:@"MyMenuController"];
myMenuController.settingsModel = settingsModel;
myMenuController.ticketStatusHandler = data;
myMenuController.rootDataModel = dataModel;
[myMenuController setModalPresentationStyle:UIModalPresentationFullScreen];
[self dismissModalViewControllerAnimated:NO];
[self presentModalViewController:myMenuController animated:YES];
///////////////////////////////////////////////////////////////////////////
//from MyMenuController.m - Load the add ticket menu
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
myTicketController = (MyTicketController *)[storyboard instantiateViewControllerWithIdentifier:@"MyTicketController"];
myTicketController.settingsModel = settingsModel;
myTicketController.ticketStatusHandler = data;
myTicketController.rootDataModel = dataModel;
[myTicketController setModalPresentationStyle:UIModalPresentationFullScreen];
[self dismissModalViewControllerAnimated:NO];
[self presentModalViewController:myTicketController animated:YES];
///////////////////////////////////////////////////////////////////////////////
//from MyTicketController.m - Load the next screen
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
myNextController = (MyNextController *)[storyboard instantiateViewControllerWithIdentifier:@"MyNextController"];
myNextController.settingsModel = settingsModel;
myNextController.rootDataModel = dataModel;
[myNextController setModalPresentationStyle:UIModalPresentationFullScreen];
[self dismissModalViewControllerAnimated:NO];
[self presentModalViewController: myNextController animated:YES];
そのため、アプリの最後に到達し、さらにいくつかのUIViewControllerをロードしました。[myNextController]がロードされた後、さらに4つまたは5つのUIViewControllerをロードするとします。
メモリ内にあるすべてのUIViewControllerをアンロードし、[myMenuController]をリロードする一般的な方法はありますか?