Кто-либо знает простой способ управлять несколькими tableViews в одном viewController? Вот то, как я делал его до сих пор:
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if(tableView == self.tableView1)
return 1;
else if(tableView == self.tableView2)
return 2;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(tableView == self.tableView1)
return @"bla";
else if(tableView == self.tableView2)
return @"blabla";
}
-(NSString *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == self.tableView1)
...
else if(tableView == self.tableView2)
...
}
Я нахожу это действительно раздражающим, который я должен использовать если/еще оператор для КАЖДОГО метода делегата. Плюс, действительно трудно читать, когда существует много tableViews. Кроме того, у меня есть та же проблема с NSURLConnection, и т.д. Как только у меня есть несколько объектов, которые отвечают на тот же протокол делегата, вещи становятся грязными.
Что лучший способ состоит в том, чтобы сделать вещи более простыми?Спасибо
Вы можете использовать селекторы и какой-то идентификатор для представлений таблицы ( UIVIEW
тег, например). Что-то вроде этого:
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [self performSelector:NSSelectorFromString([NSString stringWithFormat:@"tableView%d:titleForHeaderInSection:", tableView.tag])];
}
Конечно, вам нужно будет иметь один метод для каждого из ваших видов таблицы. Предположим, что ваши две столы имеют теги 100 и 101, у вас будет тогда TableView100: TitleForheaderInsection
и TableView101: TitleForHeaderInsection
.
Один из методов, который я часто использовал, это фактически иметь делегаты и источник данных для двух UiableView
S разных объектов. Таким образом, контроллер вашего представления не должен переключаться взад и вперед, и ваш код является общим очистителем и проще.