2016-05-30 20 views
1

Ich habe versucht und forscht für den ganzen Tag und immer noch nicht in der Lage, die richtige Antwort zu finden.Fügen Sie benutzerdefinierte UITableViewCell auf Schaltfläche klicken

Ich habe eine Schaltfläche, und ich möchte benutzerdefinierte UITableViewCell in meine statische UITableView bei Klick auf die Schaltfläche einfügen.

Folgendes habe ich getan. Ich habe eine XIB-Datei mit meiner angepassten UITableViewCell erstellt und ihr eine swift-Datei zugewiesen.

Im viewDidLoad meines Tableviewcontroller, registrierte ich meine UITableViewCell:

override public func viewDidLoad() { 
    super.viewDidLoad() 

    let nib = UINib(nibName: "TableViewCell", bundle: nil) 
    addContactTableView.registerNib(nib, forCellReuseIdentifier: "cell") 
} 

Hier ist meine Funktion für meine Schaltfläche klicken:

@IBAction func buttonClick(sender: AnyObject) {   

    if let button = sender as? UIButton { 
     if let superview = button.superview { 
      if let cell = superview.superview as? UITableViewCell { 
       indexPath_g = self.tableView.indexPathForCell(cell)! 
      } 
     } 
    } 
    print(indexPath_g.row) 
    addContactTableView.beginUpdates() 
    addContactTableView.insertRowsAtIndexPaths([ 
     NSIndexPath(forRow: indexPath_g.row, inSection: 1) 
     ], withRowAnimation: .Automatic) 
    addContactTableView.endUpdates() 
} 

Und meinen cellForRowAtIndexPath:

public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath_g) as! TableViewCell 

    if(indexPath.section == 1) { 
     //Configure the cell... 
     cell.detail_field.placeholder = "Phone" 

    } 
    return cell 
} 

I versucht, dies auszuführen und ich bekomme diesen Fehler:

fatal error: unexpectedly found nil while unwrapping an Optional value

Antwort

0

Meine erste Vermutung ist Ihre cellForRow Methode:

public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath_g) as! TableViewCell 
... 
} 

Änderung indexPath_g zu indexPath

0

Legen Sie die UITableViewCell in Schaltfläche Aktion. Wenn auf die Schaltfläche tippen, können Sie die indexPath der Zelle erhalten und überall in der UItableview.Just fügen Sie zwei Methoden [Tableview Beginupdate] und [Tableview EndUpdate] nach dem Einlegen der Zelle mit insertRowsAtIndexPaths Methode einsetzen.

Verwandte Themen