2016-01-18 71 views
0

我的应用程序有一个ViewController,即在应用程序启动时打开的第一个屏幕。我通过mainstoryboard向应用程序添加了一个UITabBarController。我将UITabBarController的标题更改为“myTabBarController”。现在我该如何从已经存在的ViewController的viewDidLoad函数中访问这个TabBarController?从swift代码访问UITabBarController

回答

1

在AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 

     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let main = storyboard.instantiateViewControllerWithIdentifier("myTabBarController") as! myTabBarController 

     self.window!.rootViewController = main 
     self.window!.makeKeyAndVisible() 

     return true 
    } 

你应该设置myTabBarController的标识在Main.storyboard。

Like this image showing

+0

如何在Main.storyboard中设置myTabBarController的标识符?我将标题设置为“myTabBarController”...哪些窗口具有此设置?谢谢 –

+0

你可以看到图像的右侧。 –

+0

对不起,我是Swift/iOS编程的新手,当我将上面发布的代码添加到AppDelegate.swift时,TabBarController会在App启动后立即打开,但这不是我想要的。我只想在Button按钮上显示TabBarController。我怎样才能做到这一点? –

2

惊讶!如果你想从视图控制器的viewDidLoad函数加载UITabBarController,你为什么需要视图控制器? 但是解决方案可以是这样的: 您可以使segue:右键单击视图控制器,然后拖动到tabBarController并选择segue“show”。

但是,如果您将UITabBarController嵌入到在应用程序开始时加载TabBarController的视图控制器中,那么效果会更好。 1:选择视图控制器 2:在Xcode 3的菜单栏转到[编辑]:选择嵌入在 4:选择标签栏控制器

和你做:)

其他的解决办法是: 从故事板中删除ViewController 选择您添加的tabBarController。 转到左侧窗格中的ViewController的“属性检查器”,选择“是最初的视图控制器”

ADDED 1.给标识符TabBarController像由张家齐 2.添加按钮,在视图控制器给出,使行动吧类(做动作右键单击添加按钮并拖动到的ViewController类,并选择行动,而不是出口。) 3.现在在操作添加以下代码:

let storyBoard = UIStoryboard(name: "Main", bundle: nil) 
let vc = storyBoard.instantiateViewControllerWithIdentifier("myTabBarController") //vc is instance of TabBarController. 
self.presentViewController(vc, animated: true, completion: nil) 

DONE :)

+0

实际上,我需要在实际呈现TabBarController之前从当前ViewController - 。viewDidLoad进行一些预处理,因此我确实希望保留当前的viewcontroller。 –

+0

SEE在回答中添加了以上部分:您可以这样做。 – Dari

+0

太棒了,这个工程..谢谢达里和下面的用户。我如何选择这个作为正确的答案,我没有足够的特权来投票这个职位。 –