2010-06-08 6 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]; 
    } 

}

: 다음은 샘플입니다