Как управлять 2 tableviews в 1 viewController?

Кто-либо знает простой способ управлять несколькими 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, и т.д. Как только у меня есть несколько объектов, которые отвечают на тот же протокол делегата, вещи становятся грязными.

Что лучший способ состоит в том, чтобы сделать вещи более простыми?Спасибо

8
задан nmondollot 18 January 2010 в 15:18
поделиться

2 ответа

Вы можете использовать селекторы и какой-то идентификатор для представлений таблицы ( 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 .

6
ответ дан 5 December 2019 в 14:03
поделиться

Один из методов, который я часто использовал, это фактически иметь делегаты и источник данных для двух UiableView S разных объектов. Таким образом, контроллер вашего представления не должен переключаться взад и вперед, и ваш код является общим очистителем и проще.

6
ответ дан 5 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: