2017-06-12 4 views
0

をパラメータに私は、コードを再利用したいと思いますので、私はredirectToTabBarControllerChildスウィフト:リユースコード通過クラス

func redirectToTabBarControllerChild(storyboardName: String, tabBarIndex: Int, segueID: String, viewController: UITableViewController) { 
    let storyboardMain = UIStoryboard(name: storyboardName, bundle: nil) 
    let tabBarController = storyboardMain.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController 
    window?.rootViewController = tabBarController 
    tabBarController.selectedIndex = tabBarIndex 
    let navigationViewContrller = tabBarController.childViewControllers[tabBarIndex] as! UINavigationController 
    let currentViewContrller = navigationViewContrller.childViewControllers.first as! viewController 
    currentViewContrller.performSegue(withIdentifier: segueID, sender: nil) 
    window?.makeKeyAndVisible() 
} 

私は例えばProfileViewControllerに合格したい最後のパラメータを作成しました。しかし、私は、この行にエラーがあります:let currentViewContrller = navigationViewContrller.childViewControllers.first as! viewController

Use of undeclared type viewController

誰もが、私はそれを行うことができる方法を知っていますか?

+0

:あなたが何をしたいか

UITableViewControllerにキャストので、このようにそれを行うことです。代わりに 'viewController.self'を試してください –

答えて

1

へのViewControllerを交換します。 firstプロパティを取得しているので、キャストする必要があります。これをキャストすると、それは強制的にキャストされ、もうオプションではありません。as! UIViewControllerにキャストする必要があります。それは、オブジェクト、いないタイプだから

if let vc = navigationViewContrller.childViewControllers.first as? UITableViewController { 
    // Will succeed if the first is of type UITableViewController 
    // Use vc in here 
} 
+0

あなたの答えをありがとう、私はそれが再使用可能ではないと思うので、代わりにUIViewControllerを使用する場合、私はUITableViewControllerを使用しているので、どのようにこれをパラメータで渡すことができますか? –

+0

@ VictorMendes、更新された答えを確認してください。 –

+0

ありがとうございました!出来た! –

0

navigationController?.childViewControllersUIViewControllersarrayでのUITableViewController