Übergeben von Werten zwischen ViewControllers basierend auf der Auswahl in der Liste in Swift
Ich versuche zu übergeben, die den ausgewählten index-Nummer eines listView-Auswahl von einem ViewController zum anderen aber bin läuft in ein Problem mit dem tableView didSelectRowAtIndexPath delegieren, läuft etwas später als die prepareForSegue-Funktion.
Grundsätzlich in didSelectRowAtIndexPath, ich seta-variable, die dann aufgegriffen in der prepareForSegue. Das Problem ist, dass prepareForSegue scheint, zu laufen, die zweite, dass die Zelle ausgewählt ist und bevor der didSelectRowAtIndexPath Funktion, so heißt meine variable wird nicht übergeben.
Meine wichtigsten Codes sind:
tableView didSelectRowAtIndexPath Delegierten, die sets 'selectedResult'...
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
selectedResult = indexPath.item
txtNameSearch.resignFirstResponder() //get rid of keyboard when table touched.
println("saved result")
//tableView.deselectRowAtIndexPath(indexPath, animated: false)
//var tappedItem: ToDoItem = self.toDoItems.objectAtIndex(indexPath.row) as ToDoItem
//tappedItem.completed = !tappedItem.completed
//tableView.reloadData()
}
prepareForSegue-Funktion sendet die variable als "toPass" auf der anderen ViewController ('detailViewController'):
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!){
if (segue.identifier == "detailSeque") {
println("preparing")
var svc = segue!.destinationViewController as detailViewController
svc.toPass = selectedResult
//println(tableView.indexPathsForSelectedRows().
//svc.toPass = tableView.indexPathForSelectedRow()
}
}
Vielen Dank im Voraus
InformationsquelleAutor Oliver Spencer | 2014-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine Steckdose, um Ihre tableView in Ihrem
ViewController
Sie können einfach anrufenindexPathForSelectedRow
imprepareForSegue
.Wenn Ihr
ViewController
ist eine Unterklasse vonUITableViewController
, dann können Sie tun:Wenn Ihr
ViewController
ist keine Unterklasse vonUITableViewController
eineIBOutlet
zu denUITableView
in Ihrer view-controller:und Draht, die im Interface Builder und rufen Sie es von
prepareForSegue
wie oben zeigen.InformationsquelleAutor vacawama
Statt dem auslösen der übergang direkt aus einem storyboard Aktion, warum nicht Sie versuchen, programmgesteuert aufrufen
performSegueWithIdentifier
in IhremdidSelectRowAtIndexPath
Methode, nachselectedResult
eingestellt ist?InformationsquelleAutor Kamaros