2016-04-08 7 views
0

Ich dränge otherUserUid und otherUserFullName auf einen anderen View-Controller, aber es wird nicht sofort aufgerufen. Die Informationen hinken hinterher und es dauert 2 Klicks, bis die Informationen angezeigt werden.Bereiten Sie sich auf die Verzögerung vor. Informationen sind nachgelagert, werden aber angezeigt

Ich denke, preparForSegue: wird vor didSelectRowAtIndexPath aufgerufen: Irgendwelche Lösungen, wie das zu beheben?

Prost!

Überschreibung func Tableview (Tableview: UITableView, DidSelectRowAtIndexPath indexPath: NSIndexPath) {

self.performSegueWithIdentifier("jsqDirectory", sender: self) 
    let indexPath = tableView.indexPathForSelectedRow! 

    let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell 

    self.otherUserFullName = (currentCell.textLabel?.text)! 
    print(self.otherUserFullName) 

    self.otherUserUid = (currentCell.detailTextLabel?.text)! 
    print(self.otherUserUid) 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "jsqDirectory" { 
     if let viewController = segue.destinationViewController as? JSQViewController{ 

      viewController.senderDisplayName = self.fullName 
      viewController.senderId = self.firebase.authData.uid 

      viewController.otherUid = self.otherUserUid 
      viewController.otherUser = self.otherUserFullName 
     } 
    } 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("directoryCell") as UITableViewCell! 
    let directoryItem = items[indexPath.row] 

    cell.textLabel?.text = directoryItem.fullName 
    cell.detailTextLabel!.text = directoryItem.key 
    cell.detailTextLabel!.hidden = true 

    return cell 
} 

Antwort

0

in DidSelectRowAtIndexPath Sie segue am Ende der Funktion wie thiss auszuführen haben ..

let indexPath = tableView.indexPathForSelectedRow! 

let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell 

self.otherUserFullName = (currentCell.textLabel?.text)! 
print(self.otherUserFullName) 

self.otherUserUid = (currentCell.detailTextLabel?.text)! 
print(self.otherUserUid) 
self.performSegueWithIdentifier("jsqDirectory", sender: self) 
+0

Dank Kumpel. Es funktionierte! –

+0

Sie haben den Vorgang viel zu früh ausgeführt, als die Werte an den Controller der nächsten Ansicht zu übergeben. Stellen Sie sicher, dass Sie diese Antwort als Korrekt und Daumen hoch markieren –