我正在开发一款应用,我有一个唱歌/退出流程。当用户点击注销按钮时,我希望用户进入主屏幕。为此,我在app delegate中创建了以下方法:
- (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];
除了一件事,它工作得很好。 UINavigationBar比它应该小!以下是它的外观截图:
有一条小黑线应由UINavigationBar填充......
知道为什么会这样吗?
=======================================编辑======= ================================
我删除了新的窗口创建,因为David M.
告诉我在一条评论中做,但它仍然失败:
[self.navController popToRootViewControllerAnimated:NO];
WelcomViewController *welcomeViewController = [[WelcomViewController alloc]init];
self.navController = [[UINavigationController alloc] initWithRootViewController:welcomeViewController];
[self.window setRootViewController:navController];
答案 0 :(得分:1)
我试图找出错误..但是没找到..所以,我建议你尝试手动设置导航栏..
答案 1 :(得分:0)
禁止创建新窗口:"To change the content your app displays, you can change the window’s root view; you don’t create a new window." UIKit无意以这种方式工作。
答案 2 :(得分:0)
遵循json
建议这是我在视图控制器的viewDidLoad
中使用UINavigationBar问题所做的:
[self.navigationController.navigationBar setFrame:CGRectMake(0, 20, 320, 44)];
我希望它有所帮助!