我正在尝试构建一个多层 xmlparser,它在 tableview 中显示数据并根据所选行切换到下一个视图(很可能是同一个 viewcontroller)。
我从故事板转场开始,但由于我使用的是动态单元格,所以我不知道如何创建多个推送转场(因为它需要推送到各种视图控制器)。所以我保留了故事板视图,删除了所有的 segue 并改用下面的代码。
但是,当新视图尝试填充该行时,它会引发此异常:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“UITableView 数据源必须从 tableView 返回一个单元格:cellForRowAtIndexPath:”
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"index: %i", indexPath.row);
switch (indexPath.row) {
case 0:
{
DetailViewController *detailViewController = [DetailViewController alloc];
[self.navigationController pushViewController:detailViewController animated:YES];
break;
}
//...
default:
{
LayerViewController *layerViewController= [LayerViewController alloc];
[layerViewController setStartUpWithIndex:indexPath.row andLayer:layercount];
[self.navigationController pushViewController:layerViewController animated:YES];
break;
}
}
}
setStartUpWithIndex:andLayer: 是我的初始化方法...
当我使用以下 segue 代码通过 storyboard segue 推送时,不会发生此问题:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
[[segue destinationViewController] setStartUpWithIndex:indexPath.row andLayer:layercount];
}
我想我错过了“segue”方法所做的一些事情,我需要将其包含在我的 didSelectRowAtIndexPath 作为 cellForRowAtIndexPath: 在视图的第一层中正常工作。
请求编辑:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"LayerCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.textLabel.text = [[articles objectAtIndex:indexPath.row]objectForKey:@"HerstellerName"];
// cell.textLabel.text = @"ololol";
return cell;
}
顺便说一句,文章数组正在工作