Nib должен содержать ровно один объект верхнего уровня, который должен быть экземпляром UITableViewCell

У меня возникла ошибка при попытке использовать nib, который был зарегистрирован для повторного использования. Im использует одну и ту же пользовательскую ячейку на двух ViewControllers.

2013-09-05 11: 04: 08.476 xxx [51395: c07] *** Завершение приложения из-за неперехваченное исключение "NSInternalInconsistencyException", причина: 'invalid nib, зарегистрированный для идентификатора (TweetTableViewCellId) - nib должен содержать ровно один объект верхнего уровня, который должен быть Экземпляр UITableViewCell '

  • Я использую файл NIB с одним видом в списке объектов - сверху, уверен -. Он имеет тип TweetViewCell, который расширяет UITableViewCell.
  • Я уже определил [b] идентификатор [/b] как "TweetTableViewCellId"
  • Загрузите nib и зарегистрируйте его на viewDidLoad (я уже загружаю отладочный и пользовательский объекты)
  • Я пытаюсь восстановить зарегистрированную ячейку с использованием того же идентификатора.

некоторая часть кода

// First Controller to use custom Cell
@implementation TweetsViewController

- (void) viewDidLoad
{
...
  UINib *nib =  [UINib nibWithNibName:kTweetTableViewCellNibName bundle:nil];
  [self.tweetsTableView registerNib:nib forCellReuseIdentifier:@"TweetTableViewCellId"];

..
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  TweetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kTweetTableViewCellId forIndexPath:indexPath];
...
}

@end

// second Controller to use custom Cell

@implementation OfflineEpisodeModalViewController

- (void) viewDidLoad
{
  UINib *nib =  [UINib nibWithNibName:kTweetTableViewCellNibName bundle:nil];
  [self.tweetSearchTableView registerNib:nib forCellReuseIdentifier:kTweetTableViewCellId];
}

...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  TweetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TweetTableViewCellId" forIndexPath:indexPath];
}

@end

любое предложение?

Ответ 1

ПОСТАНОВИЛИ

Прост, но в любом случае действителен как новое знание: если вы объявляете xib файл с тем же именем (моя ошибка), файл, который будет загружен, не гарантируется.

Я удаляю "забытый" xib файл и работаю!

Ответ 2

У меня была метка, которая не находилась под "представлением содержимого" в списке элементов файлов XIB с левой стороны.

Я удалил эту метку, и она сработала.

Ответ 3

У вас может быть два представления, указывающие на один и тот же класс в вашем .xib. Дважды проверьте файлы интерфейса.