0

3 つのタブを持つタブ バーを使用するアプリケーションを作成しています。iOS 6 ではすべて正常に動作しますが、iOS 7 ではタブ 3 をクリックすると、ユーザーがログインしているかどうかがチェックされます。

-(void)viewWillAppear:(BOOL)animated
{
     appdelegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
     appdelegate.strLoginMessage=@"setting";
     BOOL isLogin= [[[NSUserDefaults standardUserDefaults] objectForKey:@"isLogin"]intValue ];
     if (isLogin) 
     {
         [self webService_Count];
     }
     else
     {
         appdelegate.showLoginBack=NO;
         ViewController *view=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
         [self.navigationController pushViewController:view animated:YES];
    }
}

ユーザーがログインしていない場合は、ログインページに送信します。ただし、ここからユーザーがタブ 3 をタップすると、ログインせずに設定ページに移動します。ユーザーが再びタブ 3 をクリックすると、黒い画面が表示されます。私はなぜ理解できないのですか?

これは、タブバーを設定する方法ですappDelegate

self.nav= [[UINavigationController alloc]initWithRootViewController:self.viewController];
self.nav1=[[UINavigationController alloc]initWithRootViewController:self.messageviewcontroller];
self.nav2=[[UINavigationController alloc]initWithRootViewController:self.settingviewController];

nav1 と nav2 で、ユーザーのログインが表示されるかどうかを確認します。

4

3 に答える 3

1

viewWillAppear:UITabBarItem の後続の各タップで呼び出されていないことしか想像できません。

チェックするメソッドにブレークポイントを設定しましたか?

実際にviewWillAppear:メソッドが呼び出されていない場合は、このコードを UITabBarItem の各タップで呼び出される場所に配置することをお勧めします。

于 2013-11-13T09:20:47.957 に答える
1

以下は私の問題を解決します。ログイン後にルートビューを変更し、ログアウト時にログインページをルートビューとして割り当てます。

 ViewController *view=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
            [self.navigationController setViewControllers:[NSArray arrayWithObject:view] animated:YES];

            MessageLoginViewController *message=[[MessageLoginViewController alloc]initWithNibName:@"MessageLoginViewController" bundle:nil];
            [appdelegate.nav1 setViewControllers:[NSArray arrayWithObject:message]];
于 2013-11-22T10:41:58.090 に答える
0

ユーザーがログインしていないかどうかを確認してから、ログイン画面を現在のナビゲーション コントローラーにプッシュするのではなく、ルート ビューとして表示する必要があります。

ViewController *view = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
appDelegate.window.rootViewController = view;
于 2013-11-13T09:44:59.367 に答える