我正在尝试使用另一个UINavigationViewController和UIViewController子类为UITabBarViewController创建主屏幕。
在申请中,有:
这是我的应用程序截屏。
HomeViewController
NavigationBar显示了一半
NewsViewController
这是我的代码。
//在TabBarWithHomeDelegate.m
中- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
homeViewController = [[HomeViewController alloc]init];
UINavigationController *nav = [[UINavigationController alloc]init];
nav.navigationItem.title = @"Tab 1 Data";
[nav pushViewController:homeViewController animated:NO];
[self.tabBarController setSelectedViewController:nav];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
//在NewsViewController.m中触摸主页按钮
-(IBAction) homeButtonClick:(id)sender
{
TabBarWithHomeAppDelegate * appDelegate
= [[UIApplication sharedApplication] delegate];
UITabBarController * tabBarController = appDelegate.tabBarController;
[tabBarController setSelectedViewController:nil];
[tabBarController setSelectedViewController:appDelegate.homeViewController];
}
另外,我附上了源代码。如果你看到我会成为毕业生并帮助我解决这个问题。事实上,我试着差不多6个小时就完成了。
答案 0 :(得分:1)
您的HomeViewController未被指定为UITabBarController中的选项卡,因此您不应该调用:
[tabBarController setSelectedViewController:appDelegate.homeViewController];
你应该让它成为一个真正的标签或做一些不同的事情。我建议打电话
[tabBarController presentModalViewController:homeViewController animated:YES];
您将无法在此方案中看到标签栏,因此您需要一种不同的方法来关闭homeViewController。但是,这更为正确,因为用户看到当前没有选中标签的标签栏控制器没有任何意义。
答案 1 :(得分:0)
我只是在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中对您的代码进行评论,并且一切正常:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}