如何从tableviewcell到tableview获取插座的数据?

时间:2016-06-10 07:07:32

标签: ios swift uitableview

我在自定义tableviewcell中有几个出口

class ShopTableViewCell: UITableViewCell {

    @IBOutlet var orderName: UITextField!

    @IBOutlet var specialinstructions: UITextField!
    @IBOutlet var shopName: UITextField!


}

我有一个tableView,它是

class ConvenienceTableViewController: UITableViewController, UITextFieldDelegate {

       override func viewDidLoad() {
        super.viewDidLoad()

       }

       func barTapped() {
         // I want to do some validation here, and getting the outlet's data from tableviewcell
       }

}

我能想到获取插座数据的唯一方法是使用cellForRowAtIndexPath

cell.orderName
cell.specialinstructions
cell.shopName

但是我如何获得这些插座的数据并将其放入func barTapped

3 个答案:

答案 0 :(得分:2)

let currentCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: requiredRow, inSection: requiredSection)) as? ShopTableViewCell
let orderName = currentCell?.orderName

barTapped

中使用此功能

答案 1 :(得分:0)

假设barTapped是分配给按钮的动作,则声明该方法正确地将按钮作为参数传递。由于表视图单元格通常是按钮调用superview的超级视图,因此获取索引路径。然后,您可以直接从模型(数据源数组)获取数据,而不是从视图(单元格)获取数据。

func barTapped(button : UIButton) {
   let cell = button.superview as! ShopTableViewCell
   let indexPath = tableView.indexPathForCell(cell)

}

答案 2 :(得分:0)

正确的方法是使用DataSource中的数据,这是您为单元格提供的数据!

对于答案的第二部分,我假设你可以点击你单元格中的栏。

如果你想按自己的方式去做,那么可以使用代表:

protocol ShopTableViewCellDelegate {
func barTapped(cellFromDelegateMethod: ShopTableViewCell)
}

你可以在这样的单元格中调用它:

@IBAction func someBarTapped(sender: AnyObject) {
   delegate?.barTapped(self)
}

然后

class ConvenienceTableViewController: UITableViewController, UITextFieldDelegate, ShopTableViewCellDelegate {

   override func viewDidLoad() {
    super.viewDidLoad()

   }

   func barTapped(cellFromDelegateMethod: ShopTableViewCell) {
      //here you have your cell
   }

}

(记得在ViewController中的某个位置设置此单元格的委托!)