2010-12-12 12 views
1

Ich habe Tabellenansicht Controller und separate Klasse, die für mich Tableviewcell behandelt. In der Tabellenansicht Zelle habe ich Pickerview. Wie Delegate und Datenquelle für Pickerview zu implementieren, die in der Klasse TableCell, aber meine Delegate Funktionen in Tableview-Controller ist?UIPickerView + TableViewCell + Delegaten und Datenquelle

Antwort

1

Sie könnten Ihren TableView-Controller in den Tabellenansichtszellen eine Eigenschaft festlegen lassen, wenn diese erstellt werden, um anzuzeigen, dass es sich um den Delegaten und die Datenquelle handelt.

Fügen Sie in der von Ihnen erstellten Klassengruppe tableview einfach eine Eigenschaft hinzu, die eine Instanz Ihres tableview-Controllers ist. Wie

@property (nonatomic, retain) MyTableViewController * pickerDelegate; 

Dann in Ihrem cellForRowAtIndexPath Sie diese Eigenschaft auf Selbst einstellen

cell.pickerDelegate = self; 

Möglicherweise müssen Sie auch zwischen den einzelnen Zelle zu unterscheiden, eine Art zusätzliche Eigenschaft wie ein Tag gesetzt. Ich würde eine andere Eigenschaft auf der Tabellenansicht Zelle wie ein NSIndexPath tun würde.

+0

vielen Dank , werde es jetzt versuchen ... –

+0

hat das für dich funktioniert? – geekydevjoe

0

Für Swift:

  1. erstellen Auslass für UIPickerView in Ansichtsklasse benutzerdefinierte Tabelle:

    class MyTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource { 
        @IBOutlet var myPickerView: UIPickerView! 
    } 
    
  2. hinzufügen Delegierten und Datenquelle in "cellForRowAtIndexPath" in Viewcontroller:

    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 
        } 
    }