我有一个menu的默认主 - 详细信息表视图。该菜单有效,但出于某种原因,按“+”按钮在我的应用中添加另一个单元格时出现以下错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符Cell对单元格进行出列 - 必须为标识符注册nib或类或在故事板中连接原型单元格
我搜索了几天的解决方案
如果我添加到viewDidLoad
:
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
我没有收到错误,但添加的单元格不是我的情节提要中配置的单元格,也没有指向详细视图控制器。
我已多次检查原型单元格的标识符字段是否已填写并且与* cellIdentifier相同。
据我所知,它似乎与问题here具有相同性质。
任何帮助都将不胜感激,如果您有时间,请解释为什么我做错了或为什么要添加某些代码。
请求的代码(两者都是Xcode 5.0.1添加的默认代码):
// Code to add the button
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
self.navigationItem.rightBarButtonItem = addButton;
// Code called when button is pressed:
- (void)insertNewObject:(id)sender
{
if (!_objects) {
_objects = [[NSMutableArray alloc] init];
}
[_objects insertObject:[NSDate date] atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
NSDate *object = _objects[indexPath.row];
cell.textLabel.text = [object description];
return cell;
}
同时查看评论中添加的图片和项目文件
答案 0 :(得分:2)
替换[MAAppDelegate application:didFinishLaunching]
UINavigationController *masterViewController = [[UINavigationController alloc] initWithRootViewController:[MAMasterViewController new]];
与
UINavigationController *masterViewController = (UINavigationController *)self.window.rootViewController;
当应用程序到达didFinishLaunching
时,已经从故事板配置了根视图控制器(如果查看故事板,则根视图控制器是指向它的箭头控制器)。请注意,此过程依赖于initWithCoder:
初始化程序。
在didFinishLaunching
中,您要放弃此视图控制器,将其替换为TWTSideMenuViewController
的实例,您已使用UINavigationController
和{{{{}}的新非故事板实例配置该实例1}}。如果您考虑一下,MAMasterViewController
无法知道应该从特定的storyboard元素配置它。实际上有一个用于从故事板中实例化视图控制器的API:[MAMasterViewController new]
。但是你不需要这样做,因为它已经为你完成了。
所以解决方案很简单。只需使用现有的根视图控制器[storyboard instantiateViewControllerWithIdentifier:]
配置TWTSideMenuViewController
。