2014-07-15 4 views
0

나는 숙제를 마쳤으며 모든 것을 제어 할 수 있다고 생각했습니다. 프로젝트를 실행할 때 모두 괜찮습니다. UITableViewCellUITextView은 비어 있습니다. 다음사용자 지정 UITableViewCell에 아무 것도 표시되지 않습니다.

[self.tableView registerClass:[NewsCell class]forCellReuseIdentifier:@"NewsCell"]; 

과 :

NewsCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewsCell" forIndexPath:indexPath]; 

NSDictionary *newsObject = [_newsArray objectAtIndex:indexPath.row]; 
NSString *title = [newsObject objectForKey:@"newsTitle"]; 

NSLog(@"title: %@", title); // This puts out the correct stuff 

[cell.newsTeaser setText:title]; 

그러나 newTeaser UITextView이 비어 나타 여기

는 중요한 코드입니다. 왜이게 무슨 오류가 있었습니까? iOS 7에서 사용자 정의 셀을 만드는 데 처음으로이 기능을 추가해야합니다 ...

+3

는 아무것도 표시되지 않는 경우, * *는 무엇을 보여주는가? 또한, 셀의'newsTeaser' 콘센트가 라벨과 연결되어 있는지 확인하십시오. – Caleb

+2

아무것도 표시되지 않습니까? 그럼 뭔가 보여 줄까요? #doublenegative – CW0007007

+0

cell.newsTeaser가 0이 아닌 것은 확실합니까? – CW0007007

답변

3

잘못된 init 메서드를 구현하기 때문에 이러한 현상이 자주 발생합니다. UITableViewCell의 지정된 초기화 프로그램은 initWithStyle:reuseIdentifier:입니다. 사용자 정의 뷰 계층 구조를 추가하는 중이며 느리게 또는이 초기화 프로그램 내부에서 수행하지 않으면 뷰가 작성되지 않습니다.

세포가 인터페이스 작성기와 호환되어야하는 경우 awakeFromNib도 구현해야합니다.

// 편집 : 그러나 설명에 설명 된대로 인터페이스 작성기를 사용하는 경우 잘못된 등록 방법을 사용하고 있습니다. registerClass:forCellReuseIdentifier:은 코드를 통한 클래스 생성에만 사용됩니다. 사용자 정의 셀 레이아웃이있는 xib 파일이있는 경우 해당 xib 파일을 registerNib:forCellReuseIdentifier:과 함께 등록해야합니다. 스토리 보드를 사용하는 경우 셀을 전혀 등록 할 필요가 없습니다. 스토리 보드 파일에서 셀 reuseIdentifier 만 지정하면됩니다.

+0

그럴 수도 있지만 OP가 "cell.newsTeaser"가 0이라는 의견에 비추어 "거의 확실하게"보인다. 콘센트가 단순히 연결되어 있지 않을 가능성이 훨씬 큽니다. – Caleb

+0

'콘센트가 연결되지 않은 경우'[self.tableView registerClass : [NewsCell class] forCellReuseIdentifier : @ "NewsCell"]; '잘못된 등록 방법입니다.어쨌든, 나는 내 게시물을 업데이트 할 것이다. –

+0

@madboy 감사합니다! 문제 해결됨. –

0

API 끝점에서 데이터를 가져 오는 경우 호출 블록이 기본/UI 스레드에서 발생하고 있으므로 호출 블록이 데이터 가져 오기를 기다리는 동안 UI가 차단 될 수 있습니다. 그런 경우에는

,이처럼 블록 방법 내부 dispatch_async 사용할 필요가 :

dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.tableView reloadData]; 
    }); 
관련 문제