выберите пользовательский UITableViewCell по идентификатору из Xib - PullRequest
0 голосов
/ 15 августа 2010

Я пытаюсь заполнить свой UITableView разными UITableViewCells.Я попытался выбрать 1 из 3 UITableViewCells из XIB-файла по идентификатору, но не могу получить значение идентификатора UITableViewCell.

- (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{



MyTableViewCell *cell = (MyTableViewCell *) [tableView dequeueReusableCellWithIdentifier:@"CellTwo"];

 if(nil == cell){

  NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
  for (id currentObject in topLevelObjects) {
   if ([currentObject isKindOfClass:[MyTableViewCell class]]) {
    MyTableViewCell *tmpCell = (MyTableViewCell *) currentObject;
    if (tmpCell.identifier == @"CellTwo") {
     cell = (MyTableViewCell *) currentObject;     
    }
    [tmpCell release];
    break;
   }
  } 
 }

 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

 return cell;}

1 Ответ

0 голосов
/ 07 июля 2011

Я решил эту проблему, создав подкласс для каждого UITableViewCell. Когда вы сравниваете тип класса, вы можете указать тип ячейки:

        cell = (FooterTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"footerTableViewCell"];

        if (cell == nil){

            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CommonTableViewCell" owner:nil options:nil];

            for (id currentObject in topLevelObjects){
                if ([currentObject isKindOfClass:[FooterTableViewCell class]]){
                    cell = (FooterTableViewCell *)currentObject;
                    return cell;
                }
            }
        }

У меня есть несколько таблиц, в которых повторно используется один и тот же вид форматирования ячеек, и я хотел иметь их в общем XIB, который я могу изменить в любое время. В .h для этого контроллера я просто объявил три подкласса UITableViewCell для каждого из трех типов ячеек.

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