Skip to content

ModalViewの後ろ側にあるViewControllerを操作する方法

2012年7月24日

モーダルビューを出している間に、後ろにあるコントローラで画面遷移しておきたいとか、更新しておきたいとか、そういう必要があったので調べてみた。

簡単に言うと、

[self presentingViewController];

を書くことで、元ビューコントローラーを呼び出すことができる。

モーダルビューと、呼び出し元の関係としては、
presentingViewController ⇔ presentedViewController
という関係があるみたい。

これを使うと、もとがタブビューだった場合、タブの移動なども可能になります。

TabBarController *t = (TabBarController *)[self.navigationController presentingViewController];
[t setSelectedIndex:4];
[t tabBarController:b didSelectViewController:[t selectedViewController]];

などすれば、タブの移動が可能。
setSelectedIndex だけだと、タブのハイライトが移動しなかったのでdidSelectViewControllerをしています。

さらにその中のビューコントローラの操作をしたいなら、

UINavigationController *n = (UINavigationController *)[t selectedViewController];
[n popToViewController:[[n viewControllers] objectAtIndex:0] animated:YES]; //一番上まで戻す

みたいにすると使用していればUINavigationControllerを取得することができます。
NavigationControllerを使っていない場合はViewControllerが取れると思うのでキャストを変えてやります。

あとはNavigationController内のViewControllerを得る場合ですが。
TopViewController *v = [[n viewControllers] objectAtIndex:0];

みたいにすれば抜き出すことができ、操作をすることができます。

広告

From → iPhone開発

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。