이들 각각은 다른 생성자를 호출합니다.dequeueReusableCellWithIdentifier 내부의 문자열 대 NSStringFromClass
let cell = tableView.dequeueReusableCellWithIdentifier(NSStringFromClass(MessageSentDateCell), forIndexPath: indexPath) as MessageSentDateCell
let cell = tableView.dequeueReusableCellWithIdentifier("MessageSentDateCell", forIndexPath: indexPath) as MessageSentDateCell
최고 전화 :
override init(style: UITableViewCellStyle, reuseIdentifier: String?)
두 번째 줄은 호출
required init(coder aDecoder: NSCoder)
그러나, 내가 말하는 겁니다 샘플 프로젝트 저장소에, required init(coder aDecoder: NSCoder)
정말 구현되지 않습니다. 그래서 첫 번째 생성자를 호출하려고합니다. 두 번째 줄이 첫 번째 생성자를 대신 호출하지 않는 이유는 무엇입니까?
예, 클래스 이름과 식별자는 동일합니다.
적절한 기술은 UI를 구현하는 방법에 따라 다릅니다. 스토리 보드 셀 프로토 타입입니까? NIB? 아니면 프로그래밍 방식으로 셀을 인스턴스화합니까? – Rob
내가 지정한 클래스에 맞는 스토리 보드 셀 프로토 타입을 사용하고 있습니다. – user83039
그리고 모든 IBOutlet을 셀 하위 클래스의 속성에 연결 했습니까? 그런 다음'initWithCoder'를 호출 할 두 번째'dequeueReusableCellWithIdentifier'는 커스텀 서브 클래스를 인스턴스화 할 때 스토리 보드가 호출하는 적절한 메소드입니다. 'initWithCoder' 메소드 내에 커스텀 초기화를하거나,'initWithCoder'가 완료되었을 때'cellForRowAtIndexPath'가 필요한 추가 설정을하도록하십시오. 그리고 (콘센트가 아닌) 특별한 설정이 필요 없다면, 단순히'initWithCoder'를 구현할 필요가 없습니다. – Rob