2017-09-19 14 views
0

이 내 버튼 동작을 포함하는 기능입니다 // 프로그래밍 방식함수에 매개 변수를 전달

func didSetCategory(info: FitnessCenterModel) { 
    myButton.addTarget(self, action: #selector(Function(d: info)), for: .touchUpInside)  
    } 

// 버튼 대상에 대한 내 선택 기능이

func Function(d:FitnessCenterModel) { 
print(info) 
} 

그러나 나는 통과 할 수 아니다 컴파일러에서 오류가 발생했습니다. "인수 '#selector'는 '@Objc'메서드, 속성 또는 이니셜 프로그램을 참조하지 않습니다.

답변

1

ctor는 이라는 메서드를 참조하지 않고 메서드 만 호출합니다. 여기서 뭐

는 :

#selector(Function(d: info)) 

Function에 인수를 전달하고이에서 선택기를 만드는 것입니다. 당신은 이것을 할 수 없습니다. 선택자는 인수가 없어야합니다. 그러면 info 매개 변수를 어떻게 전달합니까?

것은 selectedCategory라는 클래스의 속성을 만듭니다
var selectedCategory: FitnessCenterModel! 

당신이 addTarget를 호출하기 전에

은, 위의 속성에 info을 할당합니다

selectedCategory = info 

이 매개 변수를 사용하여 Function를 호출하는 다른 방법을 만듭니다.

func buttonClicked() { 
    Function(d: selectedCategory) 
} 
가 선택기로 buttonClicked를 사용하도록 addTarget 전화 변경

: 스위퍼 @

#selector(buttonClicked) 
+0

감사합니다, 당신은 나에게이 문제에 대한 자세한 내용을 말할 것 ..? –

+0

@AnilKumar 무슨 문제입니까? 관련 게시물 인 구체적인 질문이 있으십니까? 그렇다면 질문하십시오! – Sweeper

+0

질문과 마찬가지로 송신자를 선택자의 매개 변수로 전달할 수 있지만 왜 매개 변수를 전달할 수 없습니까? –