Пользовательская проблема загрузки UITableViewCell из NIB - PullRequest
0 голосов
/ 18 апреля 2011

ОБНОВЛЕНИЕ: Я решил это сейчас - см. Мой собственный комментарий. Удивительно, как часто выписывание проблемы может привести к разрешению, когда вы пройдете ее снова!


Я, должно быть, прочитал каждую ветку по SO и примерам по Apple, но я просто не могу заставить это работать в моем случае, и мне интересно, что я делаю неправильно?

Я создал пользовательскую ячейку в IB с XCode 4. Для владельца файла задан класс настраиваемого контроллера представления для таблицы, и у меня есть IBOutlet для ячейки UITableView, который подключен OK, что я могу сказать , Я обычно делаю все свои ячейки таблицы с помощью кода и использую метод быстрой прокрутки, но для этого проекта мне действительно нужно использовать перья для загрузки содержимого ячейки, и у меня возникло горе, которое я не могу понять.

Итак, в моем файле интерфейса у меня есть;

@interface myCustomTableViewController <various delegates> {

   UITableViewCell *customNibCell;
   ...     
}

@property (nonatomic,assign) IBOutlet UITableViewCell *customNibCell;

В customTableViewController я делаю это в моем cellForRowAtIndexPath;

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@:"customDirCell"];

    if (cell == nil) {

        [[NSBundle mainBundle] loadNibNamed:@"DirectoryCellWithMenu" owner:self options: nil];

        cell = customNibCell;
        self.customNibCell = nil;

     }

     [self configureCell:cell atRow:indexPath.row];

И мой метод configureCell делает это, чтобы проникнуть в ячейку и извлечь то, что я хочу настроить.

UIImageView *fileImageView = (UIImageView *)[cell viewWithTag:3];
UILabel *headingTextLabel = (UILabel *)[cell viewWithTag:4];
UILabel *modifiedTextLabel = (UILabel *)[cell viewWithTag:5];
UILabel *sizeTextLabel = (UILabel *)[cell viewWithTag:6];

Проблема

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

НО ни одна из настроек не работает - я не могу изменить текст какой-либо из меток, например и при расследовании, результат каждого [cell viewWithTag: nn] равен nil , что явно указывает на проблему, но я не могу понять, в чем причина.

  1. Идентификатор для UITableViewCell установлен в "customDirCell"
  2. Идентификационные данные объекта для меток и т.д. действительно 3,4,5,6 согласно IB
  3. XIB содержит ровно 1 объект, UITableViewCell

Я не вижу ничего плохого ни в создании файла nib, ни в коде, но я явно что-то упускаю!

Может ли какая-нибудь добрая душа пролить свет на то, куда я должен смотреть?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Я решил это согласно моему комментарию.

0 голосов
/ 18 апреля 2011

Вы пробовали это

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@:"customDirCell"];

    if (cell == nil) {

       NSArray *nib =  [[NSBundle mainBundle] loadNibNamed:@"DirectoryCellWithMenu" owner:self options: nil];

        cell =[nib objectAtIndex:0];
        self.customNibCell = nil;

     }
...