Ein viewcontrollerB ist gleichzeitig die Stammansicht des nav-Controllers und die erste Ansicht des tab-view-Controllers. Wie übergibt man Daten von der ursprünglichen Ansicht A über den Nav- und Tab-Controller an ViewB? DankSchnelles Weiterleiten von Daten zwischen Nav und Tab Controller
1
A
Antwort
0
Geben Sie Ihre Tab-Leiste Controller eine benutzerdefinierte Klasse, zum Beispiel MyTabBarController, und eine Variable dort erklärt, dass der Text von Ihrem Textfeld in Log-in-View-Controller (via prepareForSegue) erhalten. Dann können Sie von Ihrem Home View-Controller auf diese Variable zugreifen.
In Ihre Login-View-Controller:
@IBAction func ButtonPressed(sender: AnyObject) {
performSegueWithIdentifier("toTabBarController", sender: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let tabBarController = segue.destinationViewController as? MyTabBarController{
tabBarController.someVariable = someTextField.text!
}
}
in der Tab-Leiste Controller:
var someVariable = String()
in Ihnen nach Hause Tableview Controller:
override func viewWillAppear(animated: Bool) {
let tabBarController = self.tabBarController as! MyTabBarController
someVariable = tabBarController.someVariable
print("the text is",someVariable)
}
Hallo, danke. Ich habe Ihren Code in meiner App ausprobiert. Das Problem ist, dass meine AnsichtB derzeit sowohl im Nav-Controller als auch im Tab-Controller eingebettet ist. Der Wert kann also nicht direkt von logView an viewB übergeben werden, indem der Wert an den Tab-Controller gesendet wird. –
Ja, ich habe mir das Storyboard-Bild angeschaut, das Projekt neu erstellt und könnte es funktionieren lassen. Bitte geben Sie mir weitere Informationen, damit ich Ihnen helfen kann. Können Sie Ihre Variable mit performSegueWithIdentifier erfolgreich von logView an Ihren Tab-Controller übergeben? – valencieu
Wenn ich meine Ansicht nur auf dem Tab-Controller eingebettet habe, kann sie Daten erfolgreich übergeben. Fügen Sie jedoch einen weiteren Nav-Controller hinzu, der nicht funktioniert –