2014-11-07 3 views
0

Swift와 함께 Xcode 6.0.1을 사용하고 있습니다. 정상적인 유형의 셀에서는 정상적으로 작동하는 테이블 뷰가 있지만 사용자 지정 셀을 사용하도록 변경하면 오류가 표시되기 시작합니다. 스토리 보드에서 테이블 뷰 셀을 만들고 코코아 터치 클래스 파일 인 MyCustomCell을 UITableViewCell의 하위 클래스로 만들고 스토리 검사기의 사용자 정의 셀을 ID 관리자에서이 클래스를 사용하도록 설정했습니다. 스토리 보드의 사용자 정의 셀에 넣은 텍스트 필드를 someData라는 변수로 MyCustomCell.swift 파일에 연결했습니다.사용자 정의 테이블 셀 변수에 액세스 할 수 없습니다.

이 문제는 여기서 발생합니다 예기치 않게하는 옵션 값 오류를 풀기 동안 nil을 발견, 내가 수동으로 셀 클래스를 등록한다고 가정 :

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as MyCustomCell 
     cell.someData!.text = "testing" 
     return cell 
} 

하는은 "테스트"라인이 나에게 치명적인 오류를 제공 런타임 가자 있는 viewDidLoad에서, 다음과 같이 :

tableView.registerClass(MyCustomCell.self, forCellReuseIdentifier: "Cell") 

만약, 대신, 나는 결코 대신 사용자 정의 셀에 대한 복원 ID로 스토리 보드에서 "셀"을 가하고, 클래스를 등록하지, 나는 똑같은 오류 전무의 에로를 얻을 수 r 메시지에 있지만 "테스트 셀"줄 대신 "테스트 셀"줄에 있습니다.

MyCustomCell 클래스는 someData 변수를 연결하고 init, awakeFromNib 및 setSelected 셸을 포함하지만 그 밖의 것은 없습니다.

이 문제를 해결하는 방법을 모르겠습니다. 아마 커스텀 셀이나 다른 펜촉을 만들 필요가 있을까요? 어떤 도움을 주시면 감사하겠습니다.

은 (그런데, 나는 각 테이블 셀에 대한 개체를 저장하는 코어 데이터를 사용하고 있습니다,하지만 난 지금 작업을 사용자 정의 세포를 얻기 만 걱정 때문에 즉, 여기에 표시 아닙니다.)

+0

그 이유는 'cell.someData'는 nil이므로 강제로 unwrapping을해야합니다. 해당 속성을 제대로 초기화하고 있는지 확인하십시오. – Antonio

답변

2

당신은 Interface Builder에서 Indentifier (Attributes Inspector) 대신 Restoration Id (Identity Inspector)를 사용합니다.

+0

당신은 완전히 옳았습니다. 나는 어떤 이유로 그들을 혼란 시켰습니다. registerClass()가 아직 작동하지 않는 이유는 아직 확실하지 않습니다. - 주어진 스토리 보드 식별자를 재정의하고 싶지 않다고 생각합니다. (뭔가 잊어 버렸고 나중에 잊어 버렸습니다.) 복원 ID 포함). – wdep1

+0

당신의 셀이 다른 init ('initWithCoder' 대신에'initWithFrame')을 거쳐 갈 수 있다고 생각합니다. 셀이 인터페이스 빌더를 통해로드되면 약한 IBOutlooks를 내가 믿는 메소드를 통해 연결합니다. 코드에서 셀을 만들 때 해당 셀이 연결되지 않았을 수 있습니다. –

1

UITableView이 스토리 보드에서 인스턴스화 될 때 registerClass(_:forCellReuseIdentifier:)을 호출하면 문제가 발생합니다. 속성 관리자에서 스토리 보드의 reueseIdentifier를 제공해야합니다.

+0

나는 정상적인 식별자를 주었지만 잊어 버렸고 어떤 이유로 대신 복원 ID를 사용하고있었습니다. – wdep1

관련 문제