2015-11-26 2 views
0

Если бы я хотел иметь один и тот же базовый UITableView, отображающийся в двух разных сценариях, полезно ли использовать один источник данных и делегировать местоположение для обеих таблиц?Настройка источника данных UITableView и делегирования в отдельном файле - swift

Я хотел попробовать, но когда я выбираю табличный вид в IB и пытаюсь перетащить строку в пользовательский класс файла UITableView или даже на другой пользовательский контроллер просмотра, он не будет подключаться. Кажется возможным сделать текущий View Controller в datasource таблицы и делегировать (?).

Мне интересно, насколько это похоже на this question, но даже если это так, как это делается в быстром (и, возможно, есть новый способ сделать это).

ответ

2

Вы можете реализовать пользовательский объект класса и реализовать методы UITableViewDataSource для этого класса.

@interface MyDataSource : NSObject <UITableViewDataSource> 

//... 

@end 

И потом, UITableView имеет свойства, delegate и dataSource. Присвоить объекты права этим свойствам.

MyDataSource ds = ... ///< Initialize the dataSource object. 
self.tableView.dataSource = ds; ///< Let ds be the dataSource of `self.tableView` 
self.tableView.delegate = .... ///< Assign the delegate, generally it is `self`. 
+0

Хотя это не быстро, и вы не упомянули о создании выходного стола tableView, это достаточно ясно. Вы действительно нуждаетесь в self.tableView.dataSource или достаточно для отображения tableView.dataSource в viewDIdLoad? – DrWhat

+0

Я не знаю, как писать быстро. Но я думаю, что они одинаковы. – AechoLiu

+0

Пользовательский класс: класс MyDataSource: NSObject {} на выходе (связанный между раскадровкой и кодом в View Controller): @IBOutlet слабого вара Tableview: UITableView ... В том же VC, экземпляр переменной myDataSource типа MyDataSource и назначить tableView.dataSource для myDataSource: tableView.dataSource = myDataSource – DrWhat

1

Каждый Tableview должен иметь свой собственный контроллер Tableview. Это соответствует шаблону проектирования контроллера модели.

Если данные в двух таблицах одинаковы, вы можете использовать общий класс как источник данных.

Смежные вопросы