UIPickerView + TableViewCell + делегаты и источник данных - PullRequest
1 голос
/ 12 декабря 2010

У меня есть контроллер табличного представления и отдельный класс, который обрабатывает для меня tableviewcell.Внутри ячейки tableview у меня есть pickerview.Как реализовать делегат и источник данных для представления выбора, который находится в классе tableCell, но мои функции делегата в контроллере представления таблицы?

Ответы [ 2 ]

1 голос
/ 25 июля 2015

Для Swift:

  1. Создать выход для UIPickerView в классе пользовательского представления таблицы:

    class MyTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource {
        @IBOutlet var myPickerView: UIPickerView!
    }
    
  2. Добавить делегата и источник данных в "cellForRowAtIndexPath""в 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
        }
    }
    
1 голос
/ 12 декабря 2010

Контроллер tableView может установить свойство для ячеек табличного представления по мере их создания, указывая, что это делегат и источник данных.

В созданном вами классе tableviewcell просто добавьте свойство, которое является экземпляром вашего контроллера tableview.Например,

@property (nonatomic, retain) MyTableViewController * pickerDelegate;

. Затем в вашем cellForRowAtIndexPath вы можете установить для этого свойства значение self

cell.pickerDelegate = self;

Возможно, вам также понадобится установить какое-то дополнительное свойство сортировки, например, тег, чтобы различать каждую ячейку.Я бы подумал, что другое свойство ячеек таблицы, как NSIndexPath, подойдет.

...