2012-09-14 4 views
3

UITableViewCell 하위 클래스를 만들어 더 많은 옵션을 가진 더 큰 TableViewCell을 얻었습니다.UITableViewCell 하위 클래스에서 레이블 텍스트를 설정할 수 없습니다.

하지만 내 문제는 내가 라벨 (들)의 텍스트 (들)을 설정할 수 없다는 것입니다 : (

BlogItem *bi = [[channel items] objectAtIndex:[indexPath row]]; 

NSLog(@"%@", [bi title]); 
[[cell mainLabel] setText:[bi title]]; 
NSLog(@"%@", [[cell mainLabel] text]); 

첫 번째 로그 메시지는 내가 기대 텍스트를 반환,하지만 두 번째는 항상 로그 없는).

나는 무엇이 잘못되어야하는지 정말로 모른다. 평소처럼 라벨을 만들었습니다.

물론 라벨을 연결하고 합성했습니다 (두 번 확인). 나는 또한 각 셀 (적절한)에 대한 적절한 높이를 얻기 위해

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

을 구현했습니다.

예상대로 체크 표시가 나타납니다. 라벨에 관한 것입니다.

+1

외모 ** cell ** ** ** 님은 나를 좋아합니다. 첫 번째 로깅을 시도하여 실제로 셀 객체가 있는지 확인하십시오. –

+0

xib 파일에 라벨 아울렛에 셀 ...을 추가 했습니까 ??? 그렇다면 셀을 확인하십시오. –

+0

셀이 있습니다. 예 : > –

답변

1

UITableViewCell 하위 클래스를 cellForRowAtIndexPath 메서드에서 인스턴스화해야합니다. 또한 IBOutletsUITableView 하위 클래스에 선언되어 있고 TableView이있는 View Controller에 선언되어 있지 않은지 확인하십시오. 또한 인터페이스 빌더에있는 셀의 부모 클래스가 동일한 하위 클래스로 설정되어 있는지 확인하십시오.

이 (사용자 UITableViewCell 서브 클래스 인터페이스 파일) 같은

뭔가 : 구현 파일에서 다음

#import <UIKit/UIKit.h> 

@interface MyCustomCell : UITableViewCell 
    @property (nonatomic, weak) IBOutlet UILabel *mainLabel; 
@end 

@synthesize : cellForRowAtIndexPath에서 다음

@synthesize mainLabel; 

, 같은 :

static NSString *CellIdentifier = @"MyCellIdentifier"; 
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

BlogItem *bi = [[channel items] objectAtIndex:[indexPath row]]; 

// Configure the cell... 
cell.mainLabel.text = [bi title]; 
// ... Other stuff 
return cell; 
+0

글쎄, 내 코드는 이미 이렇게 보입니다. 유일한 차이점은 IBOutlet을 강력하다고 선언 한 것입니다. 프로그래밍을 배웠을 때 항상 IBOutlets를 취약한 자산으로 설정하라는 지시를 받았습니다. 지금은 강하게 변경하고 초기화했습니다. 이제 텍스트가 적어도 적절하게 설정되었습니다. 따라서 아무 것도 표시하지 않습니다. –

+0

프로그래밍 방식으로 처리 중입니다. 그거야. –

관련 문제