Nib必须包含一个顶级对象,它必须是一个UITableViewCell实例
尝试使用注册为重复使用的笔尖时遇到了错误的错误。 我在两个ViewController上使用相同的自定义单元格。
***由于未捕获的exception“NSInternalInconsistencyException”,终止应用程序,原因:“无效的注册标识符(TweetTableViewCellId) – 笔尖必须包含只有一个顶级对象必须是一个UITableViewCell实例“
- 我在对象列表中使用一个视图的NIB文件 – 在顶部,当然 – 。 它有types的TweetViewCell,它扩展了UITableViewCell – 。
- 我已经将[b]标识符[/ b]定义为“ TweetTableViewCellId ”
- 我加载笔尖,并注册了viewDidLoad(我已经debugging和笔尖对象加载)
- 我尝试使用相同的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
有什么build议?
我在左边的XIB文件元素列表中有一个不在“内容视图”下面的标签。
我删除了该标签,它的工作。
解决
很简单,但无论如何,作为一个新的知识是有效的:如果你声明一个相同的名字(我的错误)的XIB文件,将不能保证将被加载的文件。
我删除“被遗忘的”xib文件并且工作!
您可能有两个视图指向您的.xib中的同一个类。仔细检查您的接口文件