我目前正在開發一個iOS應用程序,使用CarbonKit庫進行導航。我目前在第一個選項卡中有一個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
是由庫以編程切換標籤提供的功能。
在我UITableViewController
我有以下幾點:
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
一個新實例,我的第二次嘗試沒有選擇我所期待的實例。
如何從SecondViewController
開始在ViewController
的第一個實例中最好地激活該方法?
您需要堅持對您創建的「CarbonTabSwipeNavigation」的引用。我猜你在你的應用程序委託中設置了一切。你在哪裏實現'carbonTabSwipeNavigation:viewControllerAtIndex'協議方法?我懷疑這對於爲每個子視圖控制器使用'CarbonTapSwipeNavigation'設置一個屬性是個好地方。然後你可以在你的'SecondViewController'中使用這個屬性。 – dylansturg
我在上面的'viewController'類中實現'viewControllerAtIndex'。如何將viewController設置爲屬性?我已經用前面提到的'viewControllerAtIndex'方法更新了我的問題。 – user3185748