UIPickerView + TableViewCell +委托和数据源

时间:2010-12-12 14:03:30

标签: xcode uitableview uipickerview

我有Table视图控制器和为我处理tableviewcell的单独类。在tableview单元格中,我有pickerview。 如何为tableCell类中的pickerview实现委托和数据源,但我的委托函数在tableview控制器中?

2 个答案:

答案 0 :(得分:1)

您可以让tableView控制器在创建它们时在tableview单元格上设置一个属性,指示它是委托和数据源。

在您创建的tableviewcell类上,只需添加一个属性,该属性是tableview控制器的一个实例。像

@property (nonatomic, retain) MyTableViewController * pickerDelegate;

然后在您的cellForRowAtIndexPath中,您可以将该属性设置为self

cell.pickerDelegate = self;

您可能还需要设置一些额外的属性,如标记,以区分每个单元格。我认为tableviewcell上的另一个属性就像NSIndexPath一样。

答案 1 :(得分:1)

对于Swift:

  1. 在自定义表格视图类中为UIPickerView创建插座:

    class MyTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource {
        @IBOutlet var myPickerView: UIPickerView!
    }
    
  2. 在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
        }
    }