2016-04-03 3 views
0

ボタン付きのUIViewControllerがあります。私はどのように私のUIViewControllerからrootViewControllerを迅速に設定できますか?

このボタンには、別のUIViewControllerに切り替える必要のあるメソッドがあります。以前、私はそれがによって処理した:

self.performSegueWithIdentifier("moveToMainWindow", sender: self) 

が、私のようなものに変更したいと思います:

let sb = UIStoryboard(name: "Main", bundle: nil) 
if let tabBarVC = sb.instantiateViewControllerWithIdentifier("MainWindow") as? TabController { 
    self.rootViewController = tabBarVC 

} 

しかし、この行self.rootViewController = tabBarVCは型のViewControllerの値が全くメンバーrootViewControllerを持っていないというエラーをもたらします。

可能性があるので、ここで修正できるものはありますか?

私はperformSegueWithIdentifierを避けたいと思っています。後で私はカップルの時にself.dismissViewControllerAnimated(true, completion: {})をやっているので、その場合には私のMainWindowパネルも解雇されます。だから私はここでセグのタイプを変えるとこのパネルは決して隠されないと思った。

答えて

1

rootViewControllerプロパティは、アプリケーション起動時に表示される最初のビューコントローラまたはルートビューコントローラを定義するプロパティで、ビューコントローラのプロパティとして設定することはできません。

seguesを使用してビューコントローラをプッシュするのではなく、UIViewControllershowViewController:またはpresentViewController:メソッドを使用してビューコントローラを開始することができます。また

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
if let tabBarVC = storyboard.instantiateViewControllerWithIdentifier("MainWindow") as? TabController { 
    self.showViewController(tabBarVC, sender: self) 
} 

、あなたがtabBarVCdismissViewController:completion:を呼び出す必要があります。注:あなたはすでに実質的にそれを得ました。