【发布时间】:2010-12-12 14:03:29
【问题描述】:
我有表格视图控制器和为我处理表格视图单元的单独类。在 tableview 单元格内我有pickerview。 如何为tableCell类中的pickerview实现委托和数据源,但我的委托功能在tableview控制器中?
【问题讨论】:
标签: xcode uitableview uipickerview
我有表格视图控制器和为我处理表格视图单元的单独类。在 tableview 单元格内我有pickerview。 如何为tableCell类中的pickerview实现委托和数据源,但我的委托功能在tableview控制器中?
【问题讨论】:
标签: xcode uitableview uipickerview
对于斯威夫特:
在自定义表格视图类中为 UIPickerView 创建 outlet:
class MyTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet var myPickerView: UIPickerView!
}
在 ViewController 的“cellForRowAtIndexPath”中添加委托和数据源:
class myViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITableViewDelegate, UITableViewDataSource {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myCell") as! MyTableViewCell
cell.myPickerView.dataSource = self
cell.myPickerView.delegate = self
return cell
}
}
【讨论】:
您可以让您的 tableView 控制器在创建 tableview 单元格时设置一个属性,表明它是委托和数据源。
在您创建的 tableviewcell 类上,只需添加一个属性,该属性是您的 tableview 控制器的实例。喜欢
@property (nonatomic, retain) MyTableViewController * pickerDelegate;
然后在您的 cellForRowAtIndexPath 中,您可以将该属性设置为 self
cell.pickerDelegate = self;
您可能还需要设置一些额外的属性,例如标签来区分每个单元格。我认为 tableviewcell 上的另一个属性,如 NSIndexPath 会做。
【讨论】: