2013-11-24 18 views
6

Ho un oggetto controller che possiede un NSMenu ed è il delegato di quel menu, nell'interesse della popolazione pigra.NSMenu delegato non chiamato per popolare

Tuttavia, non viene mai chiamato né numberOfItemsInMenu:menuNeedsUpdate:, quindi il menu rimane vuoto.

mi hanno confermato che:

  • L'oggetto controllo non è stato deallocato. (Il controller, a sua volta, possiede il menu.)
  • Ha un menu.
  • Il menu ha un delegato e questo è il controller.

Se implemento menuWillOpen:, che si chiamati, ma you're not supposed to populate the menu there.

Ho provato a inviare il menu un messaggio update e questo non ha avuto alcun effetto. Il delegato è rimasto non chiamato e il menu è rimasto vuoto.

Nel caso sia rilevante: questo menu non è nel menu principale; è usato altrove.

Perché il menu non chiede al proprio delegato di compilarlo? C'è qualcosa che ho perso, o è solo rotto?

+0

Puoi incollare qui il tuo codice. Quindi lo proveremo anche noi? –

+0

@hussainShabbir: No. Il codice non mi appartiene; Stavo lavorando a un lavoro a contratto. (Oltre a ciò, l'ho già modificato per non fare affidamento su quei metodi chiamati dal sistema.) –

+0

Sto avendo esattamente lo stesso problema adesso, e la tua menzione riguardo 'menuWillOpen:' mi ha salvato molto tempo. Per la cronaca, 'menuDidClose:' rende anche lo stesso problema anche per l'impostazione della proprietà 'enabled' di una voce di menu. L'unica cosa che funziona è 'menuNeedsUpdate:'. – Eonil

risposta

0

Forse hai bisogno di un forte riferimento al delegato. Provare a spostare la dichiarazione delle variabili fuori dal metodo e creare una variabile membro a livello di classe. guarda questa risposta: https://stackoverflow.com/a/21816149/1664943

+0

Ti sei perso questa parte della domanda: "Ho confermato che: • L'oggetto controller non è stato deallocato." –

+0

Hai avuto a un certo punto una vista setMenu: ..? Se sì, dove hai decelerato la variabile Menu? Nel mio caso anche il controller NON è stato deallocato, ma ARC ha invalidato il riferimento al mio delegato. – ThorstenC

+0

L'oggetto controller a cui mi riferivo è il delegato del menu e il suo proprietario. –