2015-04-05 3 views
0

У меня есть один класс BrandOfCarTableViewCell: UITableViewCell, который имеет метки и кнопки.
Одна кнопка увеличивает число на этикетке, а вторая уменьшает ее.
Кроме того, у меня есть второй класс класса TypeOfTransportTableViewController: UITableViewController, который имеет все операции с Tableviewкнопка на uiTableViewCell, которая обновляет всю таблицуView

мне нужно дать tableViewController ячейки IndexOf, где была нажата кнопка. Мне также необходимо передать значение метки (количества)

Как я могу это сделать, используя язык Swift?

ответ

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) { 
} 
} 
+0

Hello Kumar, спасибо за ответ. 1) Как мне установить функцию setUpCellWithIndex? Я устанавливаю индексы в TypeOfTransportTableViewController на cellForRowAtIndexPath с cell.cellIndex = indexPath.row 2) Как я могу назвать делегат? это таким образом делегировать. updateLabelCountWithValue (cellIndex: Int, newValue: Int) –

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

+0

Я мог бы написать весь код, но я хотел, чтобы вы выяснили оставшуюся часть. Обновление тега кнопки может быть не лучшей практикой. Вместо этого вызовите ячейку метода. setUpCellWithIndex() с требуемым индексом. –

+0

Теперь вы столкнетесь с другой проблемой, так как функция не является общедоступной. Теперь я хочу, чтобы вы это поняли :) –

Смежные вопросы