2013-05-22 3 views
0

파인더 삽입 NSMenuItem 도구를 사용하여 마우스 오른쪽 단추를 클릭하여 항목을 추가하려고합니다. 클릭 한 파일/폴더의 경로에 따라 항목을 변경해야합니다. 그러나 finder inject를 사용하면 오른쪽 클릭하기 전에 메뉴 항목이 생성되는 것 같습니다.조건부 마우스 오른쪽 버튼으로 항목을 클릭하십시오 - finder

즉, 마우스 오른쪽 버튼으로 클릭 한 파일의 경로를 검사하는 조건과 관련하여 MenuItems를 편집 할 수 없습니다. 어떤 아이디어?

나는 아래의 방법으로 클릭 한 파일의 경로를 얻을 수 있습니다

-(NSMenuItem *)createMenuItem {   
    // I need to catch the path of the clicked item here.     
    NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"ITEM TITLE" action:@selector(myMethodClicked:) keyEquivalent:@""]; 
    [menuItem setTarget:self];      
    return menuItem; 
} 

을 시도했습니다, 라인 참조 :

NSArray *selectedFiles = [[ILFinderMenu sharedInstance] selectedItems]; 

을하지만 메뉴 아이템이 추가되기 전에 나는 그것을해야합니다. 전체 기능도 아래에 추가됩니다.

- (void)myMethodClicked:(id)sender { 
    NSMenuItem *item = (NSMenuItem *)sender; 
    NSMenu *submenu = [item submenu]; 
     
    NSArray *selectedFiles = [[ILFinderMenu sharedInstance] selectedItems]; 
    NSString *selectedFilePath = [selectedFiles objectAtIndex:0]; 
    NSString *appPath = @"/eclipse/"; 
          
    if ([selectedFilePath rangeOfString:appPath].location != NSNotFound) { 
        // disable backup 
        NSMenuItem *backupMenuItem = [submenu itemAtIndex:1]; 
        [backupMenuItem setEnabled:NO]; 
         
        // enable share 
        NSMenuItem *shareItem = [submenu itemAtIndex:0]; 
        [shareItem setEnabled:YES]; 
    } else {          
        // disable share 
        NSMenuItem *backupMenuItem = [submenu itemAtIndex:0]; 
        [backupMenuItem setEnabled:NO]; 
         
        // enable backup 
        NSMenuItem *shareItem = [submenu itemAtIndex:1]; 
        [shareItem setEnabled:YES]; 
    } 
} 

답변

0

MethodSwizzling에 대한 다른 방법을 찾아야합니다. 메뉴가 생성되기 전에 호출 될 메소드를 찾습니다.

+0

이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. –

+0

아무도 MethodSwizzling에 대한 메서드 이름을 제공하지 않습니다. OP가 finder 플러그인의 잘못된 메소드를 무시합니다. –

관련 문제