2017-12-17 13 views
0

XML 문서를 읽고 저장하는 Mac 응용 프로그램을 만들고 있습니다. "Revert To"& "Duplicate"메뉴 항목을 제외한 모든 것이 올바르게 작동합니다. 내가 그 (것)들을 둘 다 무능하게하고 싶을 해결책을 찾아 낼 때까지, 그러나 나는 그것을위한 어떤 해결책도 찾아 내지 않았다, 나가 최종 사용자가 그 (것)들을 클릭 할 수 없다 그래야 나는 어떻게 두 선택권을 무능하게 할 수 있는지 알려주세요.NSDocument의 "되돌리기"및 "복제"메뉴 항목 사용 안함

나는 메뉴를 .xib에서 이미 들여다 보았으므로 비활성화 할 수 있지만 옵션이 표시되지 않습니다.

나는 어떻게 든 코드 아래에서 조작하려고했지만 어떤 답변도 찾지 못했습니다.

재정의 FUNC의 중복() 발생 -> NSDocument { 반환 자기 }

답변

1

코코아의 메뉴 항목이 validateMenuItem(_:)에서 false 반환

이 경우 해제 할 수있는 일반적인 방법 (또는 validateUserInterfaceItem(_:)합니다.) , NSDocument 하위 클래스에 다음 코드를 추가하십시오.

override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool { 

    guard let action = menuItem.action else { return false } 

    switch action { 
    case #selector(duplicate(_:)): 
     return false 
    case #selector(revertToSaved(_:)): 
     return false 
    default: break 
    } 

    return super.validateMenuItem(menuItem) 
} 

그러나 Apple의 휴먼 인터페이스 가이드 라인에 따르면 사용하지 않는 메뉴 항목을 남겨 두어서는 안됩니다. 따라서 앱이 복제 기능을 지원하지 않고 기능을 전혀 되돌릴 수없는 경우 비활성화하는 대신 항목을 제거하는 것을 선호합니다.

+0

답장을 보내 주셔서 감사합니다. appdelegate에서 작동하지 않는 validateMenuItem을 주려고합니다.하지만 언급 한 것처럼 NSDocument 서브 클래스로 코드를 옮기는 것이 도움이되었습니다. –