Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 成功登录时打开选项卡栏控制器_Ios_Swift_Uitabbarcontroller - Fatal编程技术网

Ios 成功登录时打开选项卡栏控制器

Ios 成功登录时打开选项卡栏控制器,ios,swift,uitabbarcontroller,Ios,Swift,Uitabbarcontroller,我对swift和故事板非常陌生。我有一个初始视图集,它向用户提供登录或注册选项。登录web服务成功后,我将尝试打开一个选项卡栏。我正在进入网络服务的成功,因为我可以看到响应 在初始视图控制器中,我尝试加载选项卡栏的代码如下所示: func loadHomeScreen() { emailField.text = "" passwordField.text = "" self.presentViewController(UIStoryboar

我对swift和故事板非常陌生。我有一个初始视图集,它向用户提供登录或注册选项。登录web服务成功后,我将尝试打开一个选项卡栏。我正在进入网络服务的成功,因为我可以看到响应

在初始视图控制器中,我尝试加载选项卡栏的代码如下所示:

func loadHomeScreen()
    {
        emailField.text = ""
        passwordField.text = ""
        self.presentViewController(UIStoryboard.tabbarController()!, animated: true, completion: nil)
    }
在该文件的最底部,我有以下内容:

private extension UIStoryboard {
    class func mainStoryboard() -> UIStoryboard { return UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) }

    class func tabbarController() -> TabbarController? {
        return mainStoryboard().instantiateViewControllerWithIdentifier("TabbarControllerID") as? TabbarController
    }
}
在我的故事板中,我给了tabbarcontroller上面的id。当我运行应用程序(在iphone6模拟器上测试)时,我得到了错误
“在展开可选值时发现为零”
,这是指向上面loadHome函数中的代码行(self.presentViewController(UIStoryboard.tabbarController(),动画:true,完成:nil))


如果您有任何帮助,我们将不胜感激。

您可以像这样实例化故事板,代码在
loadHomeScreen()下如下所示:

您可能需要将bundle更改为代码中的“mainBundle”,但这应该是可行的


如果您的计划是扩展
UIStoryboard
来实例化
ViewControllers
,那么这可能不是最佳解决方案,但我认为这可能会更容易/更干净一些,具体取决于项目的设置方式。

不幸的是,这不起作用,我不得不将私有扩展情节提要更改为:私有扩展UIStoryboard{class func MainstryBoard()->UIStoryboard{返回UIStoryboard(名称:“Main”,bundle:NSBundle.mainBundle())}类func tabbarController()->UITabBarController?{返回MainstryBoard().instanceeviewcontrollerwhiteIdentifier(“TabbarControllerID”)为?UITabBarController}}哦,我知道了,我以为你在将UITabBarController子类化为你自己的TabbarController类。请参考下面的答案-
emailField.text = ""
passwordField.text = ""
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("TabbarControllerID") as! TabbarController
self.presentViewController(vc, animated: true, completion: nil)