Come posso impostare lo stato predefinito di un UISegmentedControl?
-
06-07-2019 - |
Domanda
Esiste un modo per impostare il segmento selezionato iniziale in un UISegmentedControl in Interface Builder o devo farlo nel codice? Se è nel codice, viewDidLoad è il posto migliore per impostarlo?
Soluzione
In Interface Builder quando selezioni l'oggetto UISegmentedControl sull'interfaccia utente, quindi nel riquadro degli attributi, nel controllo del segmento c'è il menu a discesa del segmento, seleziona il segmento che vuoi selezionare (0,1 e così via) e spunta l'opzione 'selezionato' sotto di esso.
Altri suggerimenti
Dal codice, puoi semplicemente fare self.segmentedControl.selectedSegmentIndex = someDefaultIndex
.
L'opportunità o meno di impostarlo in viewDidLoad:
dipende interamente dalla struttura dell'applicazione. Ad esempio, se l'app si sta avviando e sta caricando la vista per la prima volta e deve impostare il controllo sul valore che aveva durante la precedente esecuzione dell'app, allora ha sicuramente senso farlo lì.
Se non usi gli storyboard e vuoi impostare un indice predefinito dopo una configurazione / rete come me, questo piccolo frammento selezionerà qualcosa se l'utente non lo ha fatto. L'ho inserito nella mia sottoclasse di UISegmentedControl
, ma è possibile posizionarlo ovunque. ( Swift 3 )
Decl: var UISegmentedControlNoSegment: Int { get }
Desc: A segment index value indicating that there is no selected segment. See selectedSegmentIndex for further information.
Versione breve:
if selectedSegmentIndex == UISegmentedControlNoSegment {
selectedSegmentIndex = initialIndex
}
Versione più lunga
func reloadData() {
guard let numberOfItems = dataSource?.numberOfItems() else {
return
}
removeAllSegments()
for index in 0...numberOfItems {
insertSegment(with: $image, at: index, animated: false)
}
if selectedSegmentIndex == UISegmentedControlNoSegment {
selectedSegmentIndex = initialIndex
}
}
Dopo aver fatto clic sul controllo segmentato, vai al punto in cui hai creato i segmenti e scegli quello che desideri sia predefinito. Quindi di seguito verrà visualizzato un riquadro con " Selezionato " da esso. Seleziona quello e sarà di default.