2

私はアプリを開発していて、歌う/サインアウトするプロセスがあります。ユーザーがサインアウトボタンをクリックすると、ユーザーをホーム画面に移動させます。これを行うために、アプリデリゲートで次のメソッドを作成しました。

- (void) restartAppWhenLogOut{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    WelcomViewController *welcomeViewController = [[WelcomViewController alloc]init];
    self.navController = [[UINavigationController alloc] initWithRootViewController:welcomeViewController];
    [self.window setRootViewController:navController];
    [self.window makeKeyAndVisible];
}

ユーザーが「ログアウト」ボタンをクリックすると、私はこれを呼び出します。

[[UIApplication sharedApplication].delegate restartAppWhenLogOut];

そして、それは1つのことを除いて正常に動作します。UINavigationBarは本来よりも小さいです!これがどのように見えるかのスクリーンショットです:

ここに画像の説明を入力してください

UINavigationBarで埋める必要のある小さな黒い線があります...

なぜこれが起こっているのか考えていますか?

=======================================編集========== =============================

1つのコメントで行うように指示されたように、新しいWindowsの作成を削除しましたDavid M.が、それでも失敗します。

[self.navController popToRootViewControllerAnimated:NO];
WelcomViewController *welcomeViewController = [[WelcomViewController alloc]init];
self.navController = [[UINavigationController alloc] initWithRootViewController:welcomeViewController];
[self.window setRootViewController:navController];
4

3 に答える 3

1

エラーを見つけようとしましたが、わかりませんでした。そのため、ナビゲーションバーを手動で設定することをお勧めします。

于 2013-03-19T06:37:39.013 に答える
0

新しいウィンドウを作成することは禁止されています。「アプリが表示するコンテンツを変更するには、ウィンドウのルートビューを変更できます。新しいウィンドウは作成しません。」UIKitはそのように機能することを意図していません。

于 2013-03-18T16:35:42.230 に答える
0

jsonアドバイスに従って、これはUINavigationBarviewDidLoadの問題でビューコントローラーで行ったことです。

[self.navigationController.navigationBar setFrame:CGRectMake(0, 20, 320, 44)];

お役に立てば幸いです。

于 2013-03-22T12:22:41.343 に答える