uiTableViewCell上的按钮,用于更新整个tableView

时间:2015-04-05 12:10:55

标签: uitableview swift

我有一个类BrandOfCarTableViewCell:UITableViewCell,它有标签和按钮。
一个按钮增加标签上的数字,第二个减少它 另外,我有一个第二类ClassOfTransportTableViewController:UITableViewController,它具有tableView的所有操作

我需要为tableViewController提供单击按钮的indexOf单元格。我还需要传递标签(数量)的值

我怎样才能使用Swift语言?

2 个答案:

答案 0 :(得分:0)

代码的基本结构应如下所示。

protocol BrandOfCarTableViewCellDelegate {
 func updateLabelCountWithValue:(cellIndex: Int ,newValue :Int)
}

class BrandOfCarTableViewCell: UITableViewCell  {
 //This class can have your label and the two buttons
 var cellIndex: Int = 0
 var delegate: BrandOfCarTableViewCellDelegate?

 func setUpCellWithIndex:(index: Int)
  self.cellIndex = index
 }

 @IBAction func buttonTapped() {
 //Call the delegate
 }
}

class TypeOfTransportTableViewController: UITableViewController, BrandOfCarTableViewCellDelegate {

 func updateLabelCountWithValue:(cellIndex: Int ,newValue :Int) {
 }
}

答案 1 :(得分:0)

非常感谢KUMAR !!!

 protocol BrandOfCarTableViewCellDelegate{
func updateLabelWithValueAtIndex(cellIndex:Int, newValue: Int)
}
class BrandOfCarTableViewCell: UITableViewCell {

var delegate:BrandOfCarTableViewCellDelegate?
@IBAction func btnPlus(sender: AnyObject) {

    cellIndex = btnPlusOutlet.tag

    counter = counter + 1

    // call the delegate
    delegate?.updateLabelWithValueAtIndex(cellIndex!, newValue: counter)
}


@IBAction func btnMinus() {

    cellIndex = btnPlusOutlet.tag

    if counter >= 1 {
         counter = counter - 1
    }
    else{ return }

    // call the delegate
    delegate?.updateLabelWithValueAtIndex(cellIndex!, newValue: counter)
}
}

class TypeOfTransportTableViewController: UITableViewController {

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

    let cell = tableView.dequeueReusableCellWithIdentifier("BrandOfCarCell",     forIndexPath: indexPath) as BrandOfCarTableViewCell

    cell.delegate = self
    cell.btnPlusOutlet.tag = indexPath.row
    cell.labelQty.text = String(arrayBrandsOfTransport[indexPath.row].qty)
}


func updateLabelWithValueAtIndex(cellIndex:Int, newValue: Int){
//        println("table view controller cell index: \(cellIndex)" )
//        println("the newvalue is \(newValue)")
        arrayBrandsOfTransport[cellIndex].qty = newValue
        tableView.reloadData()
    }
}

我刚刚更新了数组的值,我保留所有值并重新加载表!谢谢Kumar