Как программно создать UITableView в UIPopover, чтобы он отвечал на -cellForRowAtIndexPath
У меня есть 3 UITableViews в классе; один из tableViews программно создается в UIPopover, где я назначаю ему тег. В -cellForRowAtIndexPath я проверяю тег каждого tableView и настраиваю tableView в зависимости от идентификатора тега.
Проблема в том, что всплывающее окно не создается до тех пор, пока не будет вызван параметр -cellForRowAtIndexPath. Я не вижу, как у меня может быть отдельный -cellForRowAtIndexPath в методе, который создает tableView в popover. У меня есть tableView.dataSource = self в методе, который создает tableView.
Как я могу указать tableView в popover на его собственный -cellForRowAtIndexPath?
1 ответ
Так что это было не совсем понятно, но кажется, что вы спрашиваете, как назначить разные cellForRowAtIndexPath
для различных таблиц в вашем классе. С этой целью я создал этот небольшой пример кода, чтобы проиллюстрировать, как можно добиться наличия разных наборов источников данных для нескольких UITableView в одном классе.
Как видите, есть три разных объекта DataSource, каждый из которых может независимо управлять cellForRowAtIndexPath
для каждого из трех разных UITableView. Нет причин, по которым два табличных представления не могут использовать один источник данных, а третья таблица использует свой собственный.
* Примечание: нет причин хранить все это в одном файле, но если вы этого желаете, вы, безусловно, можете это сделать.
//UITableViewOne
@interface DataSourceOne : NSObject <UITableViewDataSource>
@end
@implementation DataSourceOne
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Setup cell for TableViewOne
}
@end
//UITableViewTwo
@interface DataSourceTwo : NSObject <UITableViewDataSource>
@end
@implementation DataSourceTwo
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Setup cell for TableViewTwo
}
@end
//UITableViewThree
@interface DataSourceThree : NSObject <UITableViewDataSource>
@end
@implementation DataSourceThree
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Setup cell for TableViewThree
}
@end
@interface MultiTableViewController ()
@property (nonatomic,strong) UITableView *tableOne;
@property (nonatomic,strong) UITableView *tableTwo;
@property (nonatomic,strong) UITableView *tableThree;
@property (nonatomic,strong) DataSourceOne *sourceOne;
@property (nonatomic,strong) DataSourceTwo *sourceTwo;
@property (nonatomic,strong) DataSourceThree *sourceThree;
@end
@implementation MultiTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.sourceOne = [DataSourceOne new];
self.sourceTwo = [DataSourceTwo new];
self.sourceThree = [DataSourceThree new];
//Create or Load TableViews from Xib
self.tableOne.dataSource = self.sourceOne;
self.tableTwo.dataSource = self.sourceTwo;
self.tableThree.dataSource = self.sourceThree;
}
Дайте мне знать, если вы хотите получить дополнительные разъяснения, или если у вас есть дополнительные вопросы по этой теме.