我创建了视图控制器并附加了它们以控制它们各自的视图。我无法弄清楚如何使以下代码去正确的视图(这是在根视图控制器中):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
RunViewController *runViewController = [[RunViewController alloc] initWithNibName:@"RunView" bundle:[NSBundle mainBundle]];
CalcViewController *calcViewController = [[CalcViewController alloc] initWithNibName:@"CalcView" bundle:[NSBundle mainBundle]];
PushViewController *pushViewController = [[PushViewController alloc] initWithNibName:@"PushView" bundle:[NSBundle mainBundle]];
SitViewController *sitViewController = [[SitViewController alloc] initWithNibName:@"SitView" bundle:[NSBundle mainBundle]];
TimerViewController *timerViewController = [[TimerViewController alloc] initWithNibName:@"TimerView" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:runViewController animated:YES];
[runViewController release];
[self.navigationController pushViewController:pushViewController animated:YES];
[pushViewController release];
[self.navigationController pushViewController:sitViewController animated:YES];
[sitViewController release];
[self.navigationController pushViewController:timerViewController animated:YES];
[timerViewController release];
[self.navigationController pushViewController:calcViewController animated:YES];
[calcViewController release];
runViewController = nil;
pushViewController = nil;
sitViewController = nil;
timerViewController = nil;
calcViewController = nil;
}
每次我选择表格中的任何一行时 - 所有视图都会出现。如何安排它们只打开它应该的视图?
答案 0 :(得分:1)
问题是您在每个视图控制器上调用pushViewController:animated
。如果您只想要其中一个视图控制器,只需在您想要的那个上调用pushViewController:animated
即可。这是一个示例:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath*)indexPath {
// This code shows a different view depending on the selected row.
UIViewController *viewController = nil;
switch (indexPath.row) {
case 0:
viewController = [[RunViewController alloc] initWithNibName:@"RunView" bundle:[NSBundle mainBundle]];
break;
case 1:
viewController = [[CalcViewController alloc] initWithNibName:@"CalcView" bundle:[NSBundle mainBundle]];
break;
case 2:
viewController = [[PushViewController alloc] initWithNibName:@"PushView" bundle:[NSBundle mainBundle]];
break;
case 3:
viewController = [[SitViewController alloc] initWithNibName:@"SitView" bundle:[NSBundle mainBundle]];
break;
case 4:
viewController = [[TimerViewController alloc] initWithNibName:@"TimerView" bundle:[NSBundle mainBundle]];
break;
}
if (viewController != nil) {
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
}
}