2017-07-22 7 views
1

Ich werde Zellen in meinem UITableView mit einem Knopf in der Zelle löschen.UITableview nicht aus Superview entfernen

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "ATTACHMENTCELL", for: indexPath) as! AttachmentTableViewCell 
    if let obj=dm.arrayImageTable[indexPath.row] as? [String:Any] 
    { 
     cell.lblTitle.text=obj["DocumentName"] as? String 
     //cell.tag=obj["EmployeeCode"] as! Int 
     cell.lblTitle.textColor=com.getfontColor() 
     cell.imgvw.image=obj["Imag"] as? UIImage 
     cell.btnDel.tag=indexPath.row 
     cell.btnDel.addTarget(self, action: #selector(removeFromTable(sender:)), for: .touchUpInside) 
    } 

    return cell 
} 


func removeFromTable(sender:UIButton) 
{ 

    var index:Int=sender.tag 
    if(index>=dm.arrayImageTable.count) 
    { 
     index=0 
     dm.arrayImageTable.remove(at: 0) 
     dm.arrayAttachedDoc.remove(at: 0) 
    } 
    else 
    { 
     dm.arrayImageTable.remove(at: index) 
     dm.arrayAttachedDoc.remove(at: index) 
    } 

    self.tblImage.deleteRows(at: [NSIndexPath.init(row: index, section: 0) as IndexPath], with: .left) 

    var btnFrame=self.btnApplyLeave.frame 
    btnFrame.origin.y=self.btnApplyLeave.frame.origin.y-30 
    self.btnApplyLeave.frame=btnFrame 
    if(dm.arrayImageTable.count<=0) 
    { 

     self.tblImage.removeFromSuperview() 
    } 
} 

Aber mein UITableView ist das Entfernen nicht, obwohl die Zählung 0 ist Jeder, wo sehen kann das falsch ich getan habe? Bitte helfen Sie mir

+0

Ich empfehle, einen Haltepunkt bei self.tblImage.removeFromSuperview() und überprüfen mit Sicht Debuggen, wenn die Ansicht wirklich entfernt wird. Vielleicht macht es das Setzen von hidden = true. –

Antwort

0

Wie ich vermute, bei numberOfRows haben Sie ArrayImageTable.count zurückgegeben.

So:

if(index>=dm.arrayImageTable.count) 
    { 
     index=0 
     dm.arrayImageTable.remove(at: 0) 
     dm.arrayAttachedDoc.remove(at: 0) 
    } 

immer falsch ist. Da indexPath.row ungleich ArrayImageTable.count nicht identisch sein kann, wenn Sie ArrayImageTable.count um numberOfRow zurückgeben. Versuchen Sie folgendes:

var index = sender.tag == dm.arrayImageTable.count - 1 ? 0 : sender.tag 
dm.arrayImageTable.remove(at: 0) 
dm.arrayAttachedDoc.remove(at: 0) 
self.tblImage.deleteRows(at: [IndexPath.init(row: index, section: 0)], with: .left) 

hoffe, es wird Ihnen helfen.

Verwandte Themen