Ich entwickle gerade eine iOS-App mit der Bibliothek CarbonKit für die Navigation. Ich habe derzeit eine UITableView
in der ersten Registerkarte, und ich möchte programmatisch zu einer anderen Registerkarte navigieren, wenn eine Zelle ausgewählt ist.Swift - Wie Methode aus einer bestimmten Instanz aufrufen?
I haben folgende Funktion unter meiner Haupt CarbonKit
View-Controller implementiert:
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
die Funktion von der Bibliothek vorgesehen ist, um programmatisch tabs zu wechseln.
In meinem UITableViewController
ich habe folgendes:
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)
}
}
Ich verstehe, dass mit meinem ersten Versuch habe ich eine neue Instanz von ViewController
und mein zweiter Versuch erstellt haben wählen nicht die Instanz ich gehofft hatte.
Wie kann ich die Methode in der ersten Instanz ViewController
von SecondViewController
am besten aktivieren?
Sie müssen sich an einen Verweis auf die von Ihnen erstellte "CarbonTabSwipeNavigation" halten. Ich schätze, Sie haben alles in Ihrem App-Delegierten eingerichtet. Wo implementieren Sie die Protokollmethode "carbonTabSwipeNavigation: viewControllerAtIndex"? Ich vermute, dass dies ein guter Ort wäre, um eine Eigenschaft mit der "CarbonTapSwipeNavigation" für jeden Kind-View-Controller festzulegen. Dann können Sie diese Eigenschaft in Ihrem 'SecondViewController' verwenden. – dylansturg
Ich implementiere 'viewControllerAtIndex' in der obigen' viewController' Klasse. Wie lege ich einen ViewController als Eigenschaft fest? Ich habe meine Frage mit der oben erwähnten Methode 'viewControllerAtIndex' aktualisiert. – user3185748