Управление двумя табличными представлениями в одном классе - PullRequest
2 голосов
/ 20 октября 2011

Как получить доступ к двум или более табличным представлениям в одном классе с помощью tabledatasource и tabledelegates?

Ответы [ 4 ]

4 голосов
/ 20 октября 2011

В том же методе делегата вы должны обрабатывать все табличные представления,

Например:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(tableView==tableView1)
  //value for first tableview
else if(tableview==tableView2)
  //value for second tableview
}
1 голос
/ 20 октября 2011

UITableView tableView1 = [[UITableView alloc] init];когда вы создаете табличное представление, присваивайте им тег ..

tableView1.tag         = 10;
tableView1.delegate    = self;
tableView1.dataSource  = self;
[self.view addSubview:tableView1];
[tableView1 release]; 

UITableView tableView2 = [[UITableView alloc] init];
tableView2.tag         = 20;
tableView2.delegate    = self;
tableView2.dataSource  = self;
[self.view addSubview:tableView2];
[tableView2 release]; 

и в делегате

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
 if(tableView.tag == tableView1.tag)
   //value for first tableview
 else if(tableview.tag==tableView2.tag)
   //value for second tableview
}
1 голос
/ 20 октября 2011

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if([tableView tag] == 1)
{
  //value for first tableview
} else {
  //value for second tableview
}
0 голосов
/ 20 октября 2011

Я не думаю, что необходимо добавлять два UITableView и различать их, потому что будут вызываться одни и те же функции делегата.Просто добавьте один UITabaleView и выполните проверку ваших данных, установите флаги, например, если в настоящее время ваш UITableView заполнен Array1, и теперь вы хотите заполнить его Array2, просто установите флаг и вызовите [UITableView reloadData] .

Ваша проблема решена.

Что касается того, что я предлагаю, добавление двух UITableViews в одном классе не является хорошей практикой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...