2010-06-08 76 views
1

我已經創建了視圖控制器並附加了這些視圖來控制它們各自的視圖。我無法弄清楚如何使下面的代碼去正確的看法,儘管(這是根視圖控制器):選擇一行來更改視圖

- (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; 
} 

每次我選擇任何在表中的行 - 所有的意見來了。我如何安排他們只打開它應該的觀點?

回答

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]; 
    } 

}

相關問題