Nib 必须恰好包含一个顶级对象,该对象必须是 UITableViewCell 实例 [英] Nib must contain exactly one top level object which must be a UITableViewCell instance
问题描述
尝试使用已注册以供重用的笔尖时出现间歇性错误.我在两个 ViewController 上使用相同的自定义单元格.
I got intermitent error when try to use nib that was registered for reuse. Im using the same custom cell on two ViewControllers.
2013-09-05 11:04:08.476 xxx[51395:c07] *** 由于以下原因终止应用程序未捕获的异常 'NSInternalInconsistencyException',原因:'为标识符注册的笔尖无效 (TweetTableViewCellId) - 笔尖必须恰好包含一个顶级对象,该对象必须是UITableViewCell 实例'
2013-09-05 11:04:08.476 xxx[51395:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'invalid nib registered for identifier (TweetTableViewCellId) - nib must contain exactly one top level object which must be a UITableViewCell instance'
- 我在对象列表中使用带有一个视图的 NIB 文件 - 在顶部,当然 -.它有 TweetViewCell 类型,它扩展了 UITableViewCell -.
- 我已经将 [b]identifier[/b] 定义为TweetTableViewCellId"
- 我加载了 nib 并在 viewDidLoad 上注册了它(我已经调试并加载了 nib 对象)
- 我尝试使用相同的 ID 恢复注册的单元格.
一些代码
// 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
有什么建议吗?
推荐答案
RESOLVED
很简单,但无论如何,作为一个新知识是有效的:如果你声明了一个同名的 xib 文件(我的错误),将无法保证加载的文件.
Is simple, but anyway, is valid as a new knowledge: if you declare a xib file with the same name (my mistake), the file that will be loaded isnt guaranteed.
我删除了被遗忘的"xib 文件并且工作了!
I delete the "forgotten" xib file and works!
这篇关于Nib 必须恰好包含一个顶级对象,该对象必须是 UITableViewCell 实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!