2016-01-18 133 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

太棒了,這個工程..謝謝達裏和下面的用戶。我如何選擇這個作爲正確的答案,我沒有足夠的特權來投票這個職位。 –