生成新的UITableViewController并显示它

时间:2013-05-01 16:24:16

标签: ios treeview uitableview

我正在使用显示层次结构数据结构的tableviews。我拿第一个节点并在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来显示每个级别但是这样做我不能回到NavBar的上一级,就像我在故事板中使用一些控制器而我没有这样做动画。那么,有什么办法吗?类似的东西:

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)

感谢。

1 个答案:

答案 0 :(得分:1)

这就是我不喜欢故事板的原因。一直有可能做你想做的事(如果我正确地理解它),但故事板会减损它;他们没有在代码中做事的灵活性,这是我们在iOS 3和iOS 4中总是要做的事情。

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

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

您的业务逻辑可以选择MyTableViewController的类。或者,MyTableViewController可以是灵活的,在这两行之间你给它一些配置信息,使它显示正确的数据! (但我必须承认,你可以使用故事板做同样的事情,在performSegue:中配置表视图控制器。)