1

私はiOSアプリを開発しています。アプリには、ユーザーがログに記録されている、ユーザーがログに記録されていないという 2 つの状態があります。

アプリを初期化すると (ユーザーがログに記録されていない場合)、2 つのタブが表示されます。次に、必要に応じてログインすると、アプリに 4 つのタブが表示されます。アプリを閉じて再度起動すると、アプリは 4 つのタブを表示する必要があります。

ユーザー設定を使用して資格情報ユーザーを保存し、ユーザーがログに記録されているかどうかを確認しますが、どのように実装できますか?

(ストーリーボードを使用して) 4 つのタブまたは 2 つのタブを含むタブバーを表示するにはどうすればよいですか?

また、アプリの実行中 (アプリを初期化してログインしていないときにログインしている場合) に 2tabs タブバーを 4tabs タブバーに変更するにはどうすればよいですか?

ありがとう。コードの例を挙げていただければ幸いです。

解決策: ストーリーボードを 3 つ作成する必要があります。例えば:

init.storyboard
logged.storyboard (with 4 tabs)
nologged.storyboard (with 2 tabs)

init.storyboard で、必要なストーリーボードを開始できます

UIViewController *viewController;

if(user is logged)
  viewController = [[UIStoryboard storyboardWithName:@"Logged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"];
else
  viewController = [[UIStoryboard storyboardWithName:@"NoLogged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"];

[self presentViewController:viewController animated:NO completion:nil];

次に、アプリを 4 タブまたは 2 タブで表示したい場合は、同じ「起動」を行う必要があります。

UIViewController *vc = [[UIStoryboard storyboardWithName:@"Logged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"];
[self presentViewController:vc animated:YES completion:^{}];

このコードは、nologged.storyboard のコントローラー用です。

ストーリーボードで識別子「init_tab」を使用していることを確認してください。必要に応じて、各ストーリーボードのビューに識別子を配置できます。

4

2 に答える 2

0

viewControllersそのため、タブ バーのプロパティを変更する必要があります。ユーザーがログインしているという通知を受け取ったら、2 つの新しい View Controller を追加するか、デフォルトで 4 つあり、ユーザーがログインしていない場合はそれらを削除するかを選択できapplicationDidFinishLaunchingますself.window.rootViewController

于 2013-06-25T23:45:27.470 に答える