ios - 覆盖第一个 iOS 屏幕的简单方法

标签 ios objective-c iphone uitableview uiviewcontroller

现在我正在尝试使用 Storyboard,并且将我的UITableViewController 作为我的rootViewController。现在在某些情况下,如果我的用户没有登录,我希望另一个 UIViewController 首先出现。我知道我可以对其执行 segue,但据我了解 TableView 仍会尝试加载,这不是我想要的,除非他们提供有关此 UIViewController,我试图让第一个出现(如果说 NSUserDefaults 中不存在一个键)例如。

所以我的问题是,有没有一个简单的解决方案我可以添加到我的 appDelegate 以“覆盖” Storyboard中的 rootViewController,或者出现在它之前,然后一个简单的按钮可以返回 Storyboard中的 rootViewController 吗?

谢谢!

最佳答案

与这个问题非常相似:UIStoryboard load from app delegate

您应该在 Interface Builder 中 View Controller 的 Identity 部分中设置 Storyboard ID。然后你可以通过

获取该屏幕
UIViewController *viewControllerToShow = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];

你最终会得到这样的结果:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];

       UIViewController *vc = nil;
       if (someKindOfCheck) {
           vc = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
       }
       else {
           vc =[storyboard instantiateInitialViewController];
       }

       // Set root view controller and make windows visible
       self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
       self.window.rootViewController = vc;
       [self.window makeKeyAndVisible];

   return YES;
}

关于ios - 覆盖第一个 iOS 屏幕的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26657477/

相关文章:

iphone - 如何解析 Objective-C 中 iframe 标签的 src 属性?

objective-c - 使用 RSS 提要数据的 Hydrate 表 Objective C

iphone - 如何增加Scrollview的滚动区域

iphone - 如何开发人脸识别 iPhone 应用程序?

ios - 如何在 Swift 中使用 accessoryType?

android - Cordova - 更新到 5.1.1 后无法构建

ios:如何使用音频队列从蓝牙耳机录音?

ios - NSFetchResultsController 的 NSPredicate

iphone - 我拥有的 NSManagedObject 被 main.m 释放了吗?

iphone - 从 iPhone 应用程序发送推文