我有一个表格单元格的自定义类,它连接到表格单元格中的一个开关(带有一个动作),我希望能够与TableViewController进行通信以及该动作发生的路径以及细胞。最初想到的方式是,如果我可以在UITableViewCell中使用某些函数来获取表格的CellViewController,那么我的自定义类(显然)是UITableViewCell的子类。请告诉我,如果我遗失了什么。
答案 0 :(得分:0)
要获取对包含视图控制器的引用,我在单元子类上添加了一个弱属性。
@property (nonatomic, weak) UITableViewController *viewController;
您可以在cellForRowAtIndexPath:
答案 1 :(得分:0)
用于访问TableView中的每个单元格
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as YourTableViewCell
cell.mainTextLabel.text = self.venueService.mainCategoriesArray()[indexPath.row]
return cell
}
在TableView中获取选定的单元格
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = tableView.indexPathForSelectedRow();
let currentCell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell;
print(currentCell)
}
从TableViewCell到达TableView
self.superview //// self is TableViewCell and its superview represents TableViewController
希望有所帮助
答案 2 :(得分:0)
您应该将ViewController作为切换操作的目标。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("SwitchCell", forIndexPath: indexPath) as! SwitchTableViewCell
cell.onSwitch.addTarget(self, action: Selector("cellSwitchDidChange:"), forControlEvents: .ValueChanged)
cell.label.text = "This is a Switch"
return cell
}
func cellSwitchDidChange(sender: UISwitch) {
let origin = sender.convertPoint(CGPointZero, toView: tableView)
let indexPath = tableView.indexPathForRowAtPoint(origin)!
// do something
}