2016-06-29 8 views
1

Swift3을 배우고있어 문제가 발생했습니다.Swift3 - 대상 액션을 UITableViewCell에 추가하는 방법

특정 UITableViewCell에 버튼을 추가했습니다. 나는 버튼 등이 부착 indexpath.row를 들어

let myButton = UIButton(type: .custom) 
     myButton.frame = CGRect(x: 0, y: 0, width: 20, height: 20) 
     myButton.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside) 
     myButton.tintColor = UIColor.yellow() 

: I 버튼을 정의하고있어, cellForRowAt의 시작 부분에서

ButtonTapped libc++abi.dylib: terminating with uncaught exception of type NSException

: I 버튼을 선택하면, 나는 충돌을 얻을 이 :

cell.accessoryView = myButton as UIView

그리고 작업 buttonTapped 시도는 다른 ViewContr를로드 올러. 로그에서 볼 수 있듯이

func buttonTapped(){ 
     print("ButtonTapped") 

     let myPickerController = self.storyboard?.instantiateViewController(withIdentifier: "picker") as? MyPickerController 
     print("1") 
     self.present(myPickerController!, animated: true) 
     print("2") 

    } 

, 내가 루틴이라고 볼 수 있습니까 :

나는 버튼 액션이 (루틴 호출 한)

루틴은 다음과 같다 근무 확인을받을 호출했지만 충돌 전에 인쇄 값 1 또는 2가 표시되지 않습니다. 누구든지 내가 뭘 잘못하고 있는지 알아? 감사합니다

업데이트

이 문제를 발견했습니다. 내가 버튼을 구축 한 방법의 조합, 그리고 내가 다음보기 컨트롤러 호출 된 방법 :

self.performSegue (withIdentifier : "DetailToCategory를"보낸 사람 : 무기 호) (

self.present를 작동 categoryPickerController !, animated : true, completion : nil)가 실패합니다.

func buttonTapped(sender : UIButton){ 

.... 
} 

희망

감사 @nicolasmiari

+1

테이블보기 셀을 기억하는 것을 다시 사용합니다. 매번 새 단추를 추가하는 것이 현명한 경우 확실하지 않습니다. 아마도 각 셀에 단추가 있고 셀을 큐에서 빼낼 때마다 다시 구성해야 할 수도 있습니다. 'removeTarget ... '에'nil' 인수를 사용하여 모든 타겟/액션을 리셋 할 수 있습니다 : http://stackoverflow.com/a/3340840/433373 –

+0

좋습니다. 나는 그것을 시도했다고 생각 하겠지만, 나는 –

+0

흠을 점검 할 것이다. 단추를 전역 변수로 설정했습니다. 나는 그것을 필요로하는 특정한 세포를 위해 그것을 부른다. 나는 버튼이 그 기능을 활성화시키는 것을 볼 수있다. 그러나 나는 아직도 충돌을 얻는다. .. 다른 아이디어는 환영한다. –

답변

4

추가 대상처럼,

myButton.addTarget(self, action: #selector(YourControllerName.buttonTapped(_:)), for: .touchUpInside) 

다음과 같은 함수를 변경, 이것은 당신을 도와줍니다.

+0

감사합니다. 첫 번째 줄 (addTarget)이 '값 유형'으로 실패합니다. MyViewController '멤버가 없습니다. myButtonTapped' ' –

+0

컨트롤러 내에서 지정된 이름으로 메소드를 정의 했습니까? like'buttonTapped' –

+0

버튼 동작이 다른 뷰 컨트롤러에 있다고 생각합니다 ..? –

관련 문제