2013-11-24 2 views
6

NSMenu를 소유하고 있으며 해당 게으른 채우기를 위해 해당 메뉴의 대리자 인 컨트롤러 개체가 있습니다.NSMenu 대리자가 호출되지 않아서 채우지 못합니다.

그러나 numberOfItemsInMenu:이나 menuNeedsUpdate:도 호출되지 않으므로 메뉴가 비어 있습니다.

  • 이 컨트롤러 객체가 해제되지 않았습니다

    나는 것을 확인했다. (컨트롤러는 차례대로 메뉴를 소유합니다.)

  • 메뉴가 있습니다.
  • 메뉴에 대리자가 있으며 그 컨트롤러입니다. 가 호출 것을

내가 menuWillOpen:을 구현하는 경우,하지만 you're not supposed to populate the menu there.

메시지를 보내려고했는데 아무런 효과가 없었습니다. update. 델리게이트는 소집되지 않은 채로 남아 있었고 메뉴는 비어있었습니다.

관련성이있는 경우 :이 메뉴는 기본 메뉴에 없습니다. 그것은 다른 곳에 사용됩니다.

왜 대리인에게 메뉴를 채우라고 요청하지 않습니까? 내가 놓친 것, 아니면 그냥 깨진 것이 있습니까?

+0

여기에 코드를 붙여 넣을 수 있습니까? 그래서 우리는 또한 그것을 시도 할 것인가? –

+0

@hussainShabbir : 아니요. 이 코드는 내 것이 아닙니다. 나는 계약직으로 일하고 있었다. (게다가, 나는 시스템에 의해 호출되는 메소드에 의존하지 않기 위해 이미 그것을 변경했다.) –

+0

지금 정확히 똑같은 문제를 겪고 있고,'menuWillOpen :'에 대한 언급은 많은 시간을 절약했다. 레코드의 경우,'menuDidClose :'는 메뉴 항목의'enabled' 속성을 설정하는 경우에도 똑같은 문제를 만듭니다. 작동하는 유일한 방법은'menuNeedsUpdate :'입니다. – Eonil

답변

0

위임자에 대한 강력한 참조가 필요할 수 있습니다. 메서드에서 변수 선언을 이동하고 클래스 수준 멤버 변수를 만듭니다. 이 대답을 찾으십시오 : https://stackoverflow.com/a/21816149/1664943

+0

질문의이 부분을 놓쳤습니다. "확인한 내용 : • 컨트롤러 개체가 할당 해제되지 않았습니다." –

+0

한 번에보기 setMenu가 있습니까? ...? 그렇다면 - 어디에서 Menu 변수를 감속합니까? 내 경우에는 컨트롤러도 할당 취소되지 않았지만 ARC는 내 대리인에 대한 참조를 무효화했습니다. – ThorstenC

+0

내가 언급 한 컨트롤러 객체는 메뉴의 위임자와 소유자입니다. –