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

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

  

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

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

какой-то кусок кода

// 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

есть предложения?

12 голосов | спросил seufagner 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 05 Sep 2013 18:30:51 +0400 2013, 18:30:51

3 ответа


0

ПОСТАНОВИЛИ

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

Я удаляю «забытый» xib-файл и работает!

ответил seufagner 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 05 Sep 2013 23:45:01 +0400 2013, 23:45:01
0

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

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

ответил Imran 31 +03002015-10-31T06:06:59+03:00312015bEurope/MoscowSat, 31 Oct 2015 06:06:59 +0300 2015, 06:06:59
0

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

ответил Josh O'Connor 7 J000000Friday17 2017, 20:51:47

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132