2012-08-07 3 views
0

여러 항목을 표시하는 여러 테이블보기가 있습니다. 각 셀에 대한 상세 뷰는 동일한 레이아웃을 가져야합니다. 각 테이블에 대해 다른 세부 뷰 클래스를 구현하지 않고도 각 테이블의 모든 셀에 대해 동일한 세부 정보보기를 사용하고자합니다. 동일한 코드이므로 거의 비슷합니다. 어떻게해야합니까?여러 테이블보기에 대한 Xcode 재사용 세부 정보

다음 방법은 테이블보기 중 하나입니다. 셀을 선택 때의 상세보기를 표시합니다

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    AppDelegate *delegate = 
    (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

    PokemonInfo *thisPokemon = [delegate.allArray objectAtIndex:index.row]; 
    self.title = thisPokemon.name; 

    nameView.text = thisPokemon.name; 
    typeView.text = thisPokemon.type; 
    attackView.text = thisPokemon.attack; 
    attackView.editable = NO; 
} 
+0

저스틴, 이렇게 할 수있는 방법은 여러 가지가 있습니다. - 세부보기 컨트롤러를 다시 시작하고 다시 시작하는 방법을 만듭니다. 초기화하는 동안 PokemonInfo 개체를 전달하십시오. - 또는 값 개체와 함께 인스턴스 메서드를 사용하기 만하면됩니다. 기본적으로 컨트롤러가 생성되는 동안 didLoad에서 수행중인 작업이로드됩니다. – Tarun

+0

조언 해 주셔서 감사합니다. indexPath를 사용하여 셀을 시작하는 메서드가있었습니다. 메소드를 변경하여 호출자가 viewDidLoad 메소드에 적절한 배열을 표시 할 수 있도록 테이블을 식별하는 키를 받아들입니다. – apples

답변

0

뷰를 작성하고 펜촉에 레이아웃 :

-(void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"didSelectRowAtIndexPath"); 
    AppDelegate *delegate = 
     (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

    Detail *detail= 
     [[Detail alloc] initWithIndexPath:indexPath]; 

    [delegate.navController pushViewController:detail animated:YES]; 

    [tv deselectRowAtIndexPath:indexPath animated:YES]; 
} 

다음은 자세히보기 클래스에서의 viewDidLoad 방법입니다. 뷰에 각 요소에 고유 한 태그를 지정하십시오. nib (UINib)를 사용하여 뷰를 인스턴스화해야하는 경우 "viewWithTag"를 사용하여 요청하면 채우기를 원할 때 각 요소에 액세스하십시오. 셀을 재활용한다고 가정하면 임의의 뷰 요소를 항상 적절한 데이터로 설정합니다.

위에서 말한 것처럼 전통적인 방식은 펜촉의 셀을 인스턴스화 한 다음 동일하게 수행하는 것입니다. 액세스하려는 각 요소에 고유 한 태그가 있습니다.