需要从 appdelegate 加载 UIViewController 并在 Storyboard App 中加载时隐藏 UITabBarController
Posted
技术标签:
【中文标题】需要从 appdelegate 加载 UIViewController 并在 Storyboard App 中加载时隐藏 UITabBarController【英文标题】:Need to load UIViewController from appdelegate and hide UITabBarController when loaded in Storyboard App 【发布时间】:2012-06-24 15:58:17 【问题描述】:我有一个应用程序,如果它是用户第一次运行该应用程序,我需要在该应用程序中显示一个欢迎屏幕,然后为该应用程序提供一些仅第一次设置信息。我认为最好的放置位置是在 appdelegate (didFinishLaunchingWithOptions) 中,如果错误可能需要更正。在应用程序委托中,我调用了这个方法:
-(void) checkSetupOccured
NSString *filePath = [self dataFilePath];
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath])
//File doesn't exist, first time ran or installed
UITabBarController *MyTabViewController = (UITabBarController *)self.window.rootViewController;
[MyTabViewController setSelectedIndex:3];
WelcomeHomeViewController *welcomeHomeViewController = [[MyTabViewController viewControllers] objectAtIndex:3];
[welcomeHomeViewController viewDidLoad];
//Need help here I think - Anyway to hide MyTabViewController when its presented?
我经历了很多线程,不断弹出的事情是:
//[MyTabViewController presentModalViewController:WelcomeHomeViewController animated:YES];
//self.navigationController.navigationBarHidden = YES;
//[self setHidesBottomBarWhenPushed:YES];
我用这些方法尝试了很多不同的地方,可能只需要退后一步放松一下,但我现在找不到解决方案。还要注意 这不在 UITableView 中。任何帮助将不胜感激,我总是在回答时标记我的问题已回答。
【问题讨论】:
【参考方案1】:好的,这是我在 if 语句中输入的内容:
UITabBarController *MyTabViewController = (UITabBarController *)self.window.rootViewController;
[MyTabViewController setSelectedIndex:3];
UINavigationController *welcomeHomeViewController = [[MyTabViewController viewControllers] objectAtIndex:3];
UITabBar *tabBar = MyTabViewController.tabBar;
tabBar.hidden = YES;
[welcomeHomeViewController viewDidLoad];
这对我来说确实不合适,如果有更好的方法,请告诉我。只是想发布答案,以防其他人可以从中得到帮助。
编辑:该栏仍然可见 :( ,但没有按钮可以按下,只有一个黑色条带。任何帮助将不胜感激。至少用户无法访问该栏,但我最终需要隐藏它.
编辑:最后确定!!很高兴我解决了这个问题,真的希望这可以帮助其他人!
在这里,在 appsdevs 的帖子中修改: How to Hide Tab Bar Controller?
UITabBarController *MyTabViewController = (UITabBarController *)self.window.rootViewController;
for(UIView *view in MyTabViewController.view.subviews)
if([view isKindOfClass:[UITabBar class]])
[view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
else
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
[MyTabViewController setSelectedIndex:3];
UINavigationController *welcomeHomeViewController = [[MyTabViewController viewControllers] objectAtIndex:3];
[welcomeHomeViewController viewDidLoad];
【讨论】:
以上是关于需要从 appdelegate 加载 UIViewController 并在 Storyboard App 中加载时隐藏 UITabBarController的主要内容,如果未能解决你的问题,请参考以下文章
需要从 appdelegate 加载 UIViewController 并在 Storyboard App 中加载时隐藏 UITabBarController