2016-07-20 11 views
6

Wie der Titel angibt, habe ich eine UITextField innerhalb einer UITableViewCell.UITextField in UITableViewCell werdenFirstResponder nach dem Einfügen

My Tableview listet Elemente in einem Array tallies: [String] genannt

Ich bin auf die Schaltfläche tippen Sie einen neuen Eintrag einfügen und in der neuen Zelle Animieren. Ich will die titleTextField bis becomeFirstResponder sobald die rowAnimation abgeschlossen hat, aber bis jetzt kann es nicht funktionieren.

Die neue Reihe belebt perfekt in, aber die titleTextFieldbecomeFirstResponder

ist nicht hier, was ich versucht habe:

CATransaction.begin() 
CATransaction.setCompletionBlock { 
    let cell = self.tableView(self.tableView, cellForRowAtIndexPath: self.editingIndexPath!) as! TallyCell 
    cell.titleTextField.hidden = false 
    cell.titleTextField.becomeFirstResponder() 
} 

tableView.beginUpdates() 
tallies.append("Example") 
tableView.insertRowsAtIndexPaths([editingIndexPath!], withRowAnimation: .Left) 
tableView.endUpdates() 

CATransaction.commit() 

Antwort

0

Make Textfield Ersthelfer nach Einfügen einer Zeile.

+0

Sorry, ich hätte gesagt, dass es die Zeile Animation zu stoppen scheint, wenn ich es nach – Leon

+0

direkt anrufen CTTransaction entfernen und etwas tun, wie [Tableview insertRowsAtIndexPaths: @ [indexPath] withRowAnimation: UITableViewRowAnimationLeft]; [zelle.textLabel werdenFirstResponder]; – jagdish

+1

Versuchte das auch. kein Glück – Leon

0

versuchen diesen Code

CATransaction.begin() 
CATransaction.setCompletionBlock { 
    let cell = self.tableView(self.tableView, cellForRowAtIndexPath: self.editingIndexPath!) as! TallyCell 
    cell.titleTextField.hidden = false 
} 

tableView.beginUpdates() 
tallies.append("Example") 
tableView.insertRowsAtIndexPaths([editingIndexPath!], withRowAnimation: .Left) 
tableView.endUpdates() 
CATransaction.commit() 
let cellNew = self.tableView(self.tableView, cellForRowAtIndexPath:self.editingIndexPath!) as! TallyCell 
cellNew.titleTextField.becomeFirstResponder() 
+0

Das wird nicht funktionieren, da "Zelle" innerhalb des Blocks – Leon

+0

definiert ist, aber Sie müssen es nach CATransaction.commit() –

+0

überprüfen, bearbeitete Antwort –

Verwandte Themen