2009-09-08 2 views
5

파일을 보낼 수있는 연결된 장치가 나열된 Windows 탐색기에서 찾을 수있는 보내기 옵션과 비슷한 옵션을 사용하여 NSMenu를 만들려고합니다.동적 동작을 사용하여 NSMenu를 얻는 방법

필자의 연구에 따르면 함수에 매개 변수를 보내는 선택기를 정의 할 수 없기 때문에 @selector(@"sendToVolume:1")의 경우는 아닙니다. 그렇다면 항목 수가 알려지지 않았을 때 어떤 항목을 클릭했는지에 따라 다른 작업을 수행하려면 어떻게해야합니까?

답변

15

NSMenuItem에는 representedObject 속성이 있습니다.이 속성은 원하는 항목 (예 : 항목이 나타내는 대상에 대한 참조)을 저장할 때 사용할 수 있습니다.

-(IBAction)sendTo:(id)sender { 
    id destination = [sender representedObject]; 
} 
1

을하지만 당신은 매개 변수 선택기를 사용할 수 있습니다 선택기를 호출하면

, 당신은 다음 다시 representedObject를 얻을 수 있습니다!

-performSelector: 
-performSelector:withObject: 
-performSelector:withObject:withObject: 

이제, 먼저 @selector(someMethod:)을 갖는 유사하지만 마지막 두 선택기 파라미터를 전송하는데 사용된다 NSObject 이렇게 정의 된 세 가지 방법이있다. 예를 들어 :

-(void)sendToVolume:(NSNumber)nr { 
//do stuff 
} 

는이처럼 사용할 수 있습니다

[appController performSelector:@selector(sendToVolume:) 
       withObject:[NSNumber numberWithInt:1]];