2014-09-15 4 views
1

이 자습서 http://www.raywenderlich.com/62435/make-swipeable-table-view-cell-actions-without-going-nuts-scroll-views을 따라 사용자 정의 테이블 셀을 만듭니다. 그러나 나는 객관적인 것 대신에 신속한 것을 사용하고 있습니다.swift를 사용하여 사용자 정의 테이블보기 셀 만들기

다음은 신속한 내 테이블 셀보기입니다.

protocol SwipeableCellDelegate { 
    func buttonOneActionForItemText(itemText: NSString) 
    func buttonTwoActionForItemText(itemText: NSString) 
} 

class MyTableViewCell: UITableViewCell { 
    @IBOutlet weak var button1: UIButton! 
    @IBOutlet weak var button2: UIButton! 
    @IBOutlet weak var mytextLabel: UILabel! 

    @IBOutlet weak var testLabel: UILabel! 

    var delegate: SwipeableCellDelegate 

    init(delegate: SwipeableCellDelegate) { 
     self.delegate = delegate 
     super.init() 
    } 

    required init(coder aDecoder: NSCoder) { 
     // fatalError("init(coder:) has not been implemented") 
     super.init(coder : aDecoder) 
    } 
} 

하지만 컴파일되지 않습니다, 내가 말하는 오류가 발생합니다 :

MyTableViewCell.swift : 38 : 9 : 부동산의 'self.delegate이'는 super.init 호출

그리고 경우에 초기화되지 "초기화 (코더 aDecoder : NSCoder) 제거" '초기화' '초기화 (코더 :)'UITableViewCell의 하위 클래스에 의해 제공되어야합니다 '오류가 발생합니다. (: NSCoder 코더 aDecoder)

나는이 스레드 내 필요한 초기화에 수행 할 작업에 대한 Class does not implement its superclass's required members

을 읽었습니다.

하지만 코드를 컴파일 할 수 없습니다.

누군가가 도와 주시면 감사하겠습니다.

감사합니다.

답변

1

클래스 변수가 선택 사항으로 설정되지 않았기 때문에 모든 init 메소드의 끝에 정의 된 대리인이 필요하다고 말하는 것입니다. 한 가지 방법은

var delegate: SwipeableCellDelegate? 

읽기 초기화 및 옵션 부동산 유형 here

+0

감사에 대한 (가 nil이 될 수 있음을 의미)가 선택하게하는 것입니다. 델리게이트를 선택적으로 변경하려고했습니다. 그리고 저는 setter 메소드를 추가합니다 : var delegate : SwipeableCellDelegate? setDelegate (대리인 : SwipeableCellDelegate) { self.delegate = 델리게이트 }. 하지만 지금은 '예상 선언'이라고 말하는 컴파일러 오류가 발생합니다. – n179911

+1

왜 세터를 추가하나요? 이것은 원래의 질문과 관련이 있습니까? – ccwasden

+0

그래, 내 setter 메서드를 제거 할 수 있고 호출자가 내 테이블 셀 뷰의 'delegate'멤버를 직접 설정했다고 생각합니다. 당신의 도움을 주셔서 감사합니다. – n179911

관련 문제