2016-03-31 33 views
0

Temel olarak, potansiyel çalışanları listeleyen özel bir tablo görünümü hücrem var. Bu hücre birkaç etiket ve bir düğme içerir. İstediğim hücreyi kaldırmak için düğme için, ama bulabilirsiniz tüm şudur: Sadece o zaman seçimTablodaki hücreye sahip dequeue hücresi hücre görünümü

"delete" kaydırın eğer hücreyi silmenizi sağlar

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
if editingStyle == UITableViewCellEditingStyle.Delete { 
    numbers.removeAtIndex(indexPath.row)  
    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 
} 

}

Belirli bir satırdaki hücreyi silen tableViewController.swift dosyasında bir işlev oluşturmam gerektiğini düşünüyorum ve özel hücre sınıfımda, adı geçen işlevi çağıracak bir IBAction oluşturun.

Belirli bir satırdaki bir hücreyi silme işlevi neye benziyordu? Ancak bu durumda, hücre hangi satırda olduğunu veya tableViewController için bir iş olduğunu da biliyor mu? endeksi button.tag adresinden dataArray öğeyi, düğme yönteminde cell.button addTarget:...

  • kaldırın: senin cellForRowAtIndexPath yılında

  • +0

    bu bakınız: http://stackoverflow.com/questions/8983094/how-to-enable-swipe-to-delete-cell-in-a-tableview – Koen

    cevap

    1
    1. cell.button.tag = indexPath.row

    2. düğmesine bir hedefi ekleyin ayarlayın. Sonra Sen silip doğru hücreyi bulmak için işleyicisindeki bu etiket özelliğini kullanmak istediğiniz hücrenin indeksi saklamak için UIButton etiket özelliğini kullanabilirsiniz tableView self.tableView reloadData

    1

    yenileyin. Örnek kodumda, yalnızca varsayımını yaptım, bu nedenle yalnızca sıfır olarak ayarlanmış bir bölümünüz var.

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    { 
        ... 
        ... 
        cell.button.tag = indexPath.row 
        let tapGesture = UITapGestureRecognizer(target: self, action: Selector("handleDeleteTap:")) 
        cell.button.addGestureRecognizer(tapGesture) 
    
    } 
    
    func handleDeleteTap(sender: UITapGestureRecognizer) 
    { 
        if let button = sender.view as? UIButton 
        { 
        let indexPath = NSIndexPath(forRow: button.tag, inSection: 0) 
        tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 
        } 
    } 
    
    1

    1) Sen cellForRowAtIndexPath da düğme için bir eylem tanımlamak zorunda:
    2.1) düğmesi bulunduğu hücreyi alma: Bir seçici uygulamak zorunda

    ... 
    myButton.addTarget(self, action: "buttonTappedDelete:", forControlEvents: .TouchUpInside) 
    ... 
    

    2) .
    2.2) Hücrenin dizin yolunu alın.
    2.3) Hücreyi tablo görünümünden çıkarın ve verilerinizi güncelleyin.

    func buttonTappedDelete(sender: UIButton) { 
        let cell = sender.superview!.superview as! UITableViewCell 
        let indexPath = self.tableView.indexPathForCell(cell)! 
        self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
        // update your data model, call `self.tableView.reloadData()` 
    } 
    
    İlgili konular