iOS 14 imposta il menu UIBarButttonItem prima che venga aperto

Aug 19 2020

Poiché iOS14 offre un modo semplice per configurare il menu su UIBarButtonItem, mi chiedo se mi manca che non esista un modo semplice per impostare i suoi elementi in quanto potrebbero dipendere dal contesto corrente.

Vedo che c'è UIDeferredMenuElement, ma questo non sembra essere un buon caso d'uso per questo?

Inoltre vedo che c'è primaryAction, ma non sembra esserci un modo banale per richiamare il menu da lì.

E la terza opzione sembra rimescolare il menu su ogni modifica che potrebbe influire su di esso, ma non sembra un'ottima idea.

Presumo che ci sia qualcosa che mi manca.

Risposte

1 matt Aug 19 2020 at 16:29

Fondamentalmente per un semplice elemento del pulsante della barra non esiste tale disposizione. Un UIControl come un UIButton ha un evento .menuActionTriggereded è perfettamente ragionevole, in quel momento, costruire e assegnare il menu al controllo, implementando così un menu dinamico che viene costruito proprio nell'istante prima che il menu appaia.

Ma non puoi farlo con un elemento del pulsante della barra, a meno che non sia un elemento del pulsante della barra di visualizzazione personalizzato con un pulsante UIB al suo interno.

Quello che dovresti fare altrimenti è guardare le condizioni circostanti tramite qualche altro meccanismo e cambiare semplicemente il menu della voce del pulsante della barra ogni volta che le condizioni cambiano. Sembra una seccatura ma probabilmente è la tua unica opzione. (Immagino che sia esattamente ciò che intendi quando dici "E la terza opzione sembra rimescolare il menu su ogni modifica che potrebbe influire su di essa, ma non sembra un'ottima idea.")

Penso che quello che stai chiedendo sia ragionevole e sembra un po 'sciocco che non ci siano disposizioni per questo; se hai un buon caso d'uso, ti consiglio di presentare una richiesta di miglioramento ad Apple.