2013-07-10 4 views
1

Objective-C 및 Xcode를 처음 사용합니다. 이전에 C 프로그램을 작성해 보았으므로 Xcode를 사용하여 많은 문제가 발생했습니다.사용자 정의 tableview 셀 안에 tableview를 구현하는 방법은 무엇입니까?

이제 이미지 및 관련 코멘트를 보여주는 "instagram"과 같은 앱을 작성하고 있습니다. 이 모든 이미지와 설명은 데이터베이스에서 가져온 것이므로 내 질문에는 중요하지 않습니다.

내 디자인을 살펴보십시오. Click me

다른 셀을 아래로 스크롤하여 표시하는 동안 앱이 다른 이미지와 댓글을 계속 표시하는 "단일 셀 설정"입니다.

먼저, UITableViewController을 만든 다음 전체보기로 표보기 셀을 확대합니다. 그리고 UIImageView을 추가하고 테이블 뷰를 셀에 "추가"합니다. 따라서이 셀은 사용자 정의 셀입니다.

그런 다음이 사용자 지정 셀을 구현하기 위해 UITableViewCell 클래스를 만듭니다. 나는 검색 및 내가 좋아하는 내 사용자 지정 셀의 UIImage 표시하려면이 UITableViewCell 클래스의 하위 뷰를 추가 할 수 있다는 것을 발견 :

UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(cell.contentView.frame.origin.x,  cell.contentView.frame.size.height, 20, 20)]; 
imageView.image = [UIImage imageNamed:@"Icon.png"]; 
[cell.contentView addSubview:imageView]; 

을하지만 내 사용자 정의 셀의 하위 뷰 같은 UITableView를 추가하는 방법을 알아낼 수 없습니다 . 말, 내 사용자 정의 셀 클래스에 코드

[cell.contentView addSubView:tableView] ; 

을 추가 할 수 있지만 어디이의 셀 내용이 TableView을 포함 config (설정) 할 수 있습니까? 따라서이 방법 :

-(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath ; 

누군가가 이것을 어떻게 얻을 수 있습니까? 아니면 목표를 달성 할 수있는 또 다른 접근법이 있습니까? 도와 주셔서 감사합니다.

답변

2

나는 올바른 방향으로 가고 있다고 생각합니다.

UITableViewCell에서 파생 된 사용자 지정 tableview 셀을 만들고 UIImageViewUITableView을 셀의 내용보기에 추가하십시오. 이 사용자 지정 셀 클래스에 tableview의 대리자 함수를 추가하십시오. 기본보기에서이 사용자 정의 셀의 인스턴스를 작성할 때 주석 테이블의 데이터 소스도 설정하십시오. 의견

에 따라

편집은 이미 설명과 함께 이미지를 표시하기위한 UITableView을 포함하는 UITableViewController 있습니다. 이 클래스는이 데이터 소스를 처리하기위한 델리게이트 메소드를 포함합니다. 이 클래스의 이름을 ContentViewController라고합니다. 다음은이 클래스의

다음과 같이 실제 데이터 소스를 처리 할 수 ​​cellForRowAtIndexPath을해야합니다 :

당신의 CustomCell 클래스 이제
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellId= @"CellId"; 
    UITableViewCell *cell = nil; 
    yourDataObj = [yourDataSource objectAtIndex:indexPath.row]; 
    cell = [tableView dequeueReusableCellWithIdentifier:cellId]; 
    if (cell == nil){ 
     cell = [[[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId:yourDataObj]autorelease]; 
    } 
    //Do other cell updations here 
    // yourDataObj is a custom class which conatins an array to hold your comments data. 
} 

, 당신은 UIImageViewUITableView이있을 것이다. 따라서이 CustomCell 클래스의 init 메서드는 다음과 같습니다.

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier: (NSString *)reuseIdentifier :(YourDataObj*)cellDisplayData{ 

    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { 

      //You need to alloc and init your imageView and tableView here. 
      self.imageView.image = cellDisplayData.image;// or image url whatever 
      self.commentsTableDataSource = cellDisplayData.comments; //commentsTableDataSource is property holding comments array 

      self.commentsTable.delegate = self; 
      self.commentsTable.dataSource = self; 
      [self.commentsTable reloadData]; 
    } 
} 

또한, 지금이 사용자 정의 셀 클래스에서, 당신의 tableview의 대리인을 추가 할 수 있으며 주석 테이블에 대한 데이터 소스로 commentsTableDataSource를 사용합니다. 희망을 구현하는 방법에 대한 아이디어를 얻을.시도해주세요.

해피 코딩 !!

+0

먼저 답장을 보내 주셔서 감사합니다. 그러나 나는 "이 기본 셀의 인스턴스를 만들 때 기본보기에서 주석 테이블의 데이터 소스도 설정하십시오.", 데이터 소스를 추가하고 "내부"테이블 뷰의 위임은 어디에서해야합니까? –

+0

사용자 지정 셀 클래스에서. 사용자 정의 만든 셀 클래스 .h 파일에 UITableViewDelegate 프로토콜을 추가하고 여기에 cellForRowAtIndexPath 및 다른 대리자 메서드를 추가 할 수 있습니다. – HRM

+0

이것에 대해 몇 가지 예를 들려 줄 수 있습니까? 그것은 하나의 단일 사용자 정의 셀 클래스 .h 파일에 대한 cellForRowAtIndexPath와 같은 다중 테이블 뷰 대리자 및 데이터 소스 메서드를 가질 수 있다는 것을 의미합니까? –

관련 문제