2014-06-24 1 views
1

내 UILabel을 포함하여 사용자 지정 UITableViewCell을 만들려고합니다.Swift에서 사용자 지정 UITableViewCell UILabel 텍스트에 대한 액세스 오류가 발생합니다.

Swift에서 단일보기 응용 프로그램을 만들고 UILabel을 추가하고 새 파일 (CustomCell 클래스)에 아울렛을 만드는 것보다 .xib 파일로 Cocoa Touch 클래스를 추가했습니다.

StoryBoard에서 UITableView를 추가하고이를 데이터로 초기화합니다 (UITableViewDataSource 및 UITableViewDelegate 구현). 내가 UILabel의 텍스트 속성에 액세스하려고 해요 때

, 그 오류로 실패 :

fatal error: Can't unwrap Optional.None

이 내 CustomCell 클래스입니다 :

import UIKit 

class CustomCell: UITableViewCell { 

    @IBOutlet var myLbl: UILabel 

    override func awakeFromNib() { 
     super.awakeFromNib() 
    } 

    func SetValue(value: String){ 
     myLbl.text = value // Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 
    } 
    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 
    } 
} 

업데이트 : 다음 코드는 메인 ViewController에서 셀을 생성합니다 :

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{ 
     var cell = CustomCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Default") 
     cell.SetValue(stringArray[indexPath.row]) 
     return cell; 
    } 

답변

1

myLbl이 0이기 때문에 오류가 발생합니다.

Nib를 사용하여 셀을 생성하지 않기 때문입니다. 스타일과 함께 init을 사용하고 있습니다. 당신이 할 일은, 테이블 뷰와 펜촉을 등록하고있는 tableview에 양단 큐를 사용하는 것입니다 : 그러나, 당신이 당신의 뷰 컨트롤러의 펜촉에 템플릿 세포를 만드는,

override func viewDidLoad() { 
    var cellNib = UINib(nibName:"ANibName", bundle: nil) 
    self.tableView.registerNib(cellNib, forCellReuseIdentifier: "default") 
} 

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{ 
    var cell = tableView.dequeueReusableCellWithIdentifier("default", forIndexPath: indexPath) as CutomCell 
    cell.SetValue(stringArray[indexPath.row]) 
    return cell; 
} 

경우에, 당신은 필요가 없습니다 셀에 대해 별도의 Nib를 등록해야하지만 위와 같은 셀을 deque해야합니다.

+0

첨부 된 것처럼 보이지만 OK, IBOutlet 줄 옆의 편집기 왼쪽에 원이 보입니다. (동그라미가 회색 임) – user3210784

+0

그러면 실제로 펜촉에서로드할까요? 어떻게 세포를 만들고 있니? – drewag

+0

질문이 업데이트되었습니다. 그러나 나는 그 문제가 아니라고 확신한다. 같은 방법으로 UILabel.text없이 셀을 만들면 제대로 작동합니다. – user3210784

관련 문제