2017-11-18 9 views
2

스위프트 4로 작성하고 action으로 categoryId를 보내는 함수를 작성하려고하지만 쓸 수 없습니다. 구문이 잘못되었다고 생각합니다. 매개 변수없이 함수를 작성하면 문제가 없습니다. 하지만 매개 변수 함수에 오류가 발생합니다. 선택기 사용 방법을 말해 줄 수 있습니까?스위프트 4 여러 매개 변수가있는 선택기 사용

@objc func sendCategoryIdToPackageSelectionVC(categoryId : Int){ 
     MarketVC.categoryId = categoryId 
     self.performSegue(withIdentifier: "sequeGoToPackageSelection", sender: nil) 
    } 

func addTapFeatures(){ 
     taplabel1 = UITapGestureRecognizer(target: self, action: #selector(self.sendCategoryIdToPackageSelectionVC(categoryId:2))) 
     taplabel1?.cancelsTouchesInView = false 
     self.labelFirst.addGestureRecognizer(taplabel1!) 
} 

조치 선택기가 objc 메소드를 참조하지 않는다는 오류가 발생합니다.

+0

확인 [이 스레드 (https://stackoverflow.com/q/43251708/6541007) 또는 [이] (HTTPS ://stackoverflow.com/a/24814958/6541007). Swift 4에서'# selector '의 사용법에 대한 새로운 내용은 없습니다. – OOPer

+0

이 도움이 될 : https://stackoverflow.com/questions/19703767/pass-parameter-to-uitapgesturerecognizer – ozgur

+0

FUNC sendCategoryIdToPackageSelectionVC (카테고리 ID : INT) { self.performSegue (withIdentifier : "sequeGoToPackageSelection", 보낸 사람 : 무기 호) } @objc FUNC callMethod() { sendCategoryIdToPackageSelectionVC (카테고리 ID : 2)} FUNC의 addTapFeatures() { taplabel1 = UITapGestureRecognizer (대상 : 자기 액션 : #selector (self.callMethod))? = taplabel1 .cancelsTouchesInView false } – Yongjoon

답변

0

나는 매개 변수를 전달하기 위해 선택기를 직접 사용할 수 없다고 생각합니다. 이런 식으로 시도하십시오 handleTap (modelObj : myModelObj)를 호출하는 @objc 메서드를 만들어야합니다.

@objc func someMethod() { // name this properly! 
    handleTap(modelObj: myModelObj) 
} 

그런 다음 당신이 선택으로 이것을 전달할 수 있습니다

#selector(someMethod)