Question

Existe-t-il un moyen de définir le segment de départ sélectionné dans un UISegmentedControl dans Interface Builder ou dois-je le faire dans le code? Si cela se trouve dans le code, viewDidLoad est-il le meilleur endroit pour le définir?

Était-ce utile?

La solution

Dans Interface Builder lorsque vous sélectionnez un objet UISegmentedControl sur votre interface utilisateur, puis dans le volet Attributs, dans le contrôle de segment, sélectionnez le segment que vous souhaitez sélectionner (0,1, etc.), puis cochez l'option "sélectionné". en dessous.

Autres conseils

A partir du code, vous pouvez simplement faire self.segmentedControl.selectedSegmentIndex = someDefaultIndex .

Si vous devez le définir dans viewDidLoad: ou non, cela dépend entièrement de la structure de votre application. Par exemple, si votre application démarre et charge la vue pour la première fois et doit définir le contrôle sur la valeur qu'il avait lors de l'exécution précédente de l'application, il est alors logique de le faire ici.

Si vous n'utilisez pas de storyboards et souhaitez définir un index par défaut après une installation / mise en réseau comme moi, ce petit extrait sélectionnera un élément si l'utilisateur ne l'a pas encore fait. Je l'ai placé dans ma sous-classe de UISegmentedControl , mais vous pouvez le placer n'importe où. ( Swift 3 )

Decl: var UISegmentedControlNoSegment: Int { get }
Desc: A segment index value indicating that there is no selected segment. See selectedSegmentIndex for further information.

Version abrégée:

if selectedSegmentIndex == UISegmentedControlNoSegment {
    selectedSegmentIndex = initialIndex
}

Version longue

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
    }
}

Après avoir cliqué sur le contrôle segmenté, accédez à l'emplacement où vous avez créé les segments et choisissez celui que vous voulez utiliser par défaut. Ensuite, en dessous de celui-ci, il y aura une boîte contenant le message "Sélectionné". par cela. Sélectionnez cela et ce sera la valeur par défaut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top