2

この機能を使用する前に、ユーザーにログインまたはサインアップのいずれかを要求するiOSアプリを開発しています。流れは; アプリは2つのボタンを備えた画面を表示します1)ログイン2)サインアップいずれかのボタンをクリックすると、アプリはUiNavigationControllerを使用してユーザーを別のビューコントローラーにナビゲートします。ログインに成功すると、ユーザーは、ビューの下部にタブバーを表示し、ビューの上部にUiNavigationControllerのトップバーを表示するホームビューコントローラーに移動します。

これを実装するために、AppDelegateファイルのルートビューコントローラーとしてUINavigationViewControllerを設定しました。

ユーザーが認証されるとすぐに、次のコードを使用してUiNavigationControllerのタブバーコントローラーをプッシュします。

    FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    [firstViewController setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"1st" image:[UIImage imageNamed:@"1st.png"] tag:101]];

    SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    [secondViewController setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"2nd" image:[UIImage imageNamed:@"2nd.png"] tag:102]];

    ThirdViewController *thirdViewController = [[ThirdViewController alloc]initWithNibName:@"ThirdViewController" bundle:nil];
    [thirdViewController setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"3rd" image:[UIImage imageNamed:@"3rd.png"] tag:104]];


    UITabBarController *tabController = [[UITabBarController alloc] init];
    [tabController setViewControllers:[NSArray arrayWithObjects:firstViewController, secondViewController,thirdViewController, nil]];

    [self.navigationController pushViewController:tabController animated:YES];

これは正しいアプローチですか?ルートビューコントローラーとしてタブバーコントローラーを使用する方が良いアプローチだと誰かが言った。ログイン/サインアップ画面にタブバーを表示したくないので、どうすればタブバーコントローラーをルートビューコントローラーとして設定できますか?

ありがとうございました!

4

1 に答える 1

0

プロトコルを作成するだけで、ログインUIViewControllerとの通信が可能になりますAppDelegate。ログインが完了すると、を変更できますrootViewController。次のような操作を行うことで、AppDelegateへの参照を取得することもできます。

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

私はプロトコルを使用して異なるオブジェクト間で通信することを好みますが。

于 2012-11-27T07:56:18.173 に答える