Ios 生成新的UITableViewController并显示它

Ios 生成新的UITableViewController并显示它,ios,treeview,uitableview,Ios,Treeview,Uitableview,我正在使用显示层次数据结构的TableView。我取第一个节点,在tableview中显示子节点,并重复它直到树的末尾。我是这样做的: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if([[actualNode getSonAtIndex:0] sonsCount]>0) { NSLog(@"New level"); act

我正在使用显示层次数据结构的TableView。我取第一个节点,在tableview中显示子节点,并重复它直到树的末尾。我是这样做的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if([[actualNode getSonAtIndex:0] sonsCount]>0) {
    NSLog(@"New level");
    actualNode = [actualNode getSonAtIndex:indexPath.row];
    [self.tableView reloadData];
} else {
    NSLog(@"Service");
    [self performSegueWithIdentifier:@"Service" sender:NULL];
}
这不是正确的方法,但问题是我不知道树有多少层,所以我不能在故事板中创建它们。这个想法是只创建一个用于显示每个级别的TableView,但是这样做的话,我就不能回到导航栏上的上一个级别,就像我在故事板中使用一些控制器而没有动画时所做的那样。那么,有没有办法做到这一点?比如:

MyNextLevel *nextlevel = [MyNextLevel alloc];
[nextlevel setNode: actualNode]
Myactualtableview = nextlevel; (Here the next level is showed in the screen with animations and with the possibility to go back to the previous level)

谢谢。

这就是我不喜欢故事板的原因。一直以来,做你想做的事情都是可能的(如果我理解正确的话),但是故事板会削弱它;他们没有在代码中做事情的灵活性,这是我们在iOS 3和iOS 4中一直必须做的事情

无论如何,你想做这样的事情:

UITableViewController* tvc = [[MyTableViewController alloc] initWithNibName:@"MyNib" bundle:nil];
[self.navigationController pushViewController:tvc animated:YES];

您的业务逻辑可以为MyTableViewController选择类。或者,MyTableViewController可以是灵活的,在这两行之间,您可以为它提供一些配置信息,使其显示正确的数据!(不过,我必须承认,您可以使用故事板来完成同样的任务,在
performsgue:
中配置表视图控制器)

首先感谢您的回答,但我还没有尝试:我还没有创建特定的NIB文件。我的类的名称是“NextLevelController”,继承自UITableViewController,我如何知道我正在使用的NIB的名称?您不必将NIB与UITableViewController一起使用;在这种情况下,只需提供nil作为nib,UITableViewController就会生成一个默认的表视图并很好地连接所有内容。如果您确实希望将nib与UITableViewController一起使用,那么在Xcode中创建UITableViewController子类时,您应该选中询问是否需要nib的复选框。这样,您将获得正确的nib类型、正确的名称、正确连接的表视图和所有内容。抱歉,我这样写是因为我已经尝试使用nil,但它给我带来了以下错误:“NSInternalInconsistencyException”,原因:“无法将标识符为cell的单元格出列-必须为标识符注册nib或类,或在情节提要中连接原型单元格”关于注册cell类的更多信息(摘自我的书):您以前不必处理此问题的原因是,如果表视图控制器来自情节提要,则不必这样做。