現在、ナビゲーション用にCarbonKitライブラリを使用してiOSアプリを開発中です。私は現在、最初のタブにUITableView
を持っています。セルが選択されると、別のタブにプログラム的にナビゲートしたいと思います。Swift - 特定のインスタンスからメソッドを呼び出す方法は?
私は私のメインCarbonKit
ビューコントローラの下に、以下の機能を実装しました:
import CarbonKit
class ViewController: UIViewController, CarbonTabSwipeNavigationDelegate {
func carbonTabSwipeNavigation(carbonTabSwipeNavigation: CarbonTabSwipeNavigation, viewControllerAtIndex index: UInt) -> UIViewController {
switch index {
case 0:
return self.storyboard!.instantiateViewControllerWithIdentifier("AircraftViewController") as! AircraftViewController
case 1:
return self.storyboard!.instantiateViewControllerWithIdentifier("LoadController") as! LoadController
case 3:
return self.storyboard!.instantiateViewControllerWithIdentifier("SettingsController") as! SettingsController
default:
return self.storyboard!.instantiateViewControllerWithIdentifier("ViewControllerOne") as! ViewControllerOne
}
}
func navigate(index: UInt) {
carbonTabSwipeNavigation.setCurrentTabIndex(index, withAnimation: true)
}
}
setCurrentTabIndex
は、プログラム的にタブを切り替えるために、ライブラリが提供する機能です。
import UIKit
import CarbonKit
class SecondViewController: UITableViewController {
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
\\ First Attempt
(ViewController() as CarbonTabSwipeNavigationDelegate).navigate(2)
\\ Second Attempt
let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("controller") as! ViewController
viewController.navigate(2)
}
}
私は私の最初の試みで、私はViewController
の新しいインスタンスを作成し、私の第二の試みは、私が期待していたインスタンスを選択しなかったことを理解:私は、次のしている私のUITableViewController
で
。
ViewController
の最初のインスタンスでメソッドを有効にするには、SecondViewController
からどうすればよいですか?あなたは、ナビゲーション・プロバイダーにアクセスする必要がありますので、ごSecondViewController
クラスにCarbonTabSwipeNavigation
プロパティを追加することにより
あなたが作成した 'CarbonTabSwipeNavigation'への参照にぶら下がっている必要があります。私はあなたのアプリケーションデリゲートですべてを設定すると思います。 'carbonTabSwipeNavigation:viewControllerAtIndex'プロトコルメソッドはどこに実装しますか?私はそれがそれぞれの子ビューコントローラーの 'CarbonTapSwipeNavigation'でプロパティを設定するのに適していると思います。次に、そのプロパティを 'SecondViewController'で使用することができます。 – dylansturg
私は 'viewControllerAtIndex'を上記の' viewController'クラスに実装しています。 viewControllerをプロパティとして設定するにはどうすればよいですか?上記の 'viewControllerAtIndex'メソッドで私の質問を更新しました。 – user3185748