私はいくつかのアプリでこれを見てきましたが、これはかなり一般的なケースです。しかし、数日を過ごした後、私はまだこれで苦労しています。私は以下のような構造を持っています:ログアウト時にuiviewcontroller/unloadビューを解除する方法
UITabBarController
-- UINavigationController1
---- UITableViewController1
-- UINavigationController2
---- UITableViewController2
私はUITableViewController2にログアウトボタンを持っています。そのログアウトボタンをクリックすると、すべてのビューコントローラが割り当て解除され、すべてのビューがアンロードされます。基本的には、アプリを起動するように新鮮な開始します。私は基本的にそれぞれのUITableViewController上でviewDidLoadを再度呼び出す必要があります。
私は、UITableViewController2のログアウトアクションを取ったときに私のappdelegateで呼び出される以下のメソッドを試しました。
-(void) logout {
for (UINavigationController* ctrl in self.tabBarController.viewControllers) {
[ctrl popToRootViewControllerAnimated:NO];
ctrl.visibleViewController.view = nil;
}
[self.tabBarController.view removeFromSuperview];
[self.window addSubview:self.tabBarController.view];
}
しかし、悲しいかな、動作するようには思えないのですか?
このようなことがどのように成し遂げられたのでしょうか?また、iOS4とiOS5ではvisibleViewControllerを使用してさまざまな動作が見られます。私はここでモーダルviewcontrollerを使用していません。どんな怪物?
アップデート:私はあなたのビューコントローラを解放する必要がARCに
おかげ MBH
(この場合、私は本当に[アダム・ケンプのアイディア]のように、私は、これはまさにあなたのケースのために働くだろうわからないんだけど、私はただログアウト時にpopToRootViewController' 'したかったhttp://forums.xamarin.com/discussion /あなたは 'UserDidLogOut'ため' NSNotificationCenter'イベントを追加し、そのイベントを処理示唆3749/popviewcontroller・オール・ウェイ・ツー・メイン画面のアプリ-rootviewcontroller)、**ビュー・コントローラー内。 – cloudrave