从LaunchScreen看到Main.Storyboard中的viewController?

时间:2016-08-30 15:19:45

标签: ios swift viewcontroller launch-screen

我在LaunchScreen中想要做一些逻辑,如果检查没问题,我想要转到viewController,如果不是,我想转到另一个,那可能吗?

5 个答案:

答案 0 :(得分:2)

  

我在LaunchScreen中想要做一些逻辑

现在我理解了这个问题,我可以回答:不要。稍后做你耗时的逻辑。您的工作是快速启动 。您需要退出applicationDidFinishLaunchingWithOptions,退出viewDidLoad启动

你在那一点展示的是由你决定的;如果你有耗时的东西(在你的情况下,这听起来像你正在联网或做一些其他的东西,当你加载表的数据源需要时间),你想要显示一个特殊的视图控制器,涵盖时间有旋转活动视图或其他东西,很好。但在实际发布期间不是时候做到这一点。

答案 1 :(得分:0)

你不能为launchScreen.Storyboard编码,原因是: - 当你的launchScreen.storyboard显示应用仍在加载时。

简单地说:当您的应用显示launchScreen.storyboard时无法访问您的应用,您所能做的只是为其执行UI / UX而不执行任何代码。

替代方案: - 制作一个viewController,它显示为第一个viewController,检查你的逻辑并从那里做相应的事情!

参考: - https://stackoverflow.com/a/27642160/6297658

答案 2 :(得分:0)

didFinishLaunchingWithOptions()中运行您的支票并使用它直接“跳转”到特定的vc。这是一个使用userDefaults的示例,但当然您可以用正在运行的任何检查替换它。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Do some logic

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let welcomeVC = storyboard.instantiateViewControllerWithIdentifier("WelcomeNavController")
            self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
            self.window?.rootViewController = welcomeVC
            self.window?.makeKeyAndVisible()
        }
}

答案 3 :(得分:0)

您的应用加载时会显示您的LaunchScreen。转到AppDelgate

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {

    window.rootViewController = //your root view controller that you have figured out with logic

    return true
}

答案 4 :(得分:0)

将此功能添加到OpKernelContext* ctx = ...; const tensorflow::Tensor t = ctx->input(...); const auto m = Eigen::Map<const Eigen::Matrix< float, /* scalar element type */ Eigen::Dynamic, /* num_rows is a run-time value */ Eigen::Dynamic, /* num_cols is a run-time value */ Eigen::RowMajor /* tensorflow::Tensor is always row-major */>>( t.flat<float>().data(), /* ptr to data */ t.dim_size(0), /* num_rows */ t.dim_size(1) /* num_cols */);

AppDelegate

func initialVC(storyboardID: String) { let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let initialViewController : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("\(storyboardID)") as UIViewController self.window?.makeKeyAndVisible() if storyboardID == "tabBarVC" { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.rootViewController = initialViewController } else { let navController = UINavigationController(rootViewController: initialViewController) self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.rootViewController = navController } } 内的didFinishLaunchingWithOptions方法中,您可以添加以下内容:

AppDelegate

您可以在我的示例中看到,我要么加载主应用程序VC还是登录VC,具体取决于用户是否已登录。在您的情况下,您可以使用if - else语句并在{ {1}}功能。

注意:当我呼吁加载if currentUser != nil { initialVC("tabBarVC") } else { initialVC("loginVC") } 时,我必须加载initialVC,因为loginVC嵌入在navigationController中。对于navigationController,我不会嵌入loginVC,因为它不是必需的。