我正在使用显示层次结构数据结构的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)
感谢。
答案 0 :(得分:1)
这就是我不喜欢故事板的原因。一直有可能做你想做的事(如果我正确地理解它),但故事板会减损它;他们没有在代码中做事的灵活性,这是我们在iOS 3和iOS 4中总是要做的事情。
无论如何,你想做这样的事情:
UITableViewController* tvc = [[MyTableViewController alloc] initWithNibName:@"MyNib" bundle:nil];
[self.navigationController pushViewController:tvc animated:YES];
您的业务逻辑可以选择MyTableViewController的类。或者,MyTableViewController可以是灵活的,在这两行之间你给它一些配置信息,使它显示正确的数据! (但我必须承认,你可以使用故事板做同样的事情,在performSegue:
中配置表视图控制器。)