11 votes

UIControlState.Normal est indisponible

Auparavant, pour UIButton les instances, vous avez pu passer dans UIControlState.Normal para setTitle o setImage . .Normal n'est plus disponible, que dois-je utiliser à la place ?

let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
btn.setTitle("title", for: .Normal) // does not compile

(Il s'agit d'une paire de questions-réponses canonique afin d'éviter l'afflux de questions dupliquées liées à ce sujet. UIButton y UIControl changements avec iOS 10 et Swift 3)

19voto

JAL Points 3432

Mise à jour de Swift 3 :

Il semble que Xcode 8/Swift 3 ait apporté UIControlState.normal arrière :

public struct UIControlState : OptionSet {

    public init(rawValue: UInt)

    public static var normal: UIControlState { get }

    public static var highlighted: UIControlState { get } // used when UIControl isHighlighted is set

    public static var disabled: UIControlState { get }

    public static var selected: UIControlState { get } // flag usable by app (see below)

    @available(iOS 9.0, *)
    public static var focused: UIControlState { get } // Applicable only when the screen supports focus

    public static var application: UIControlState { get } // additional flags available for application use

    public static var reserved: UIControlState { get } // flags reserved for internal framework use
}

UIControlState.Normal a été renommé en UIControlState.normal et retiré du SDK iOS. Pour les options "normales", utilisez un tableau vide pour construire un ensemble d'options vide.

let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))

// Does not work
btn.setTitle("title", for: .Normal) // 'Normal' has been renamed to 'normal'
btn.setTitle("title", for: .normal) // 'normal' is unavailable: use [] to construct an empty option set

// Works
btn.setTitle("title", for: [])

2voto

Galvin Points 181

El .Normal est supprimée (iOS 10 DP1), vous pouvez utiliser la fonction [] o UIControlState(rawValue: UInt(0)) pour remplacer le .Normal si vous ne voulez pas changer tous les codes (au cas où apple l'ajouterait à nouveau ou si vous n'aimez pas le code de l'article). [] ), vous pouvez simplement ajouter une fois ce code

extension UIControlState {
    public static var Normal: UIControlState { return [] }
}

o

extension UIControlState {
    public static var Normal: UIControlState { return UIControlState(rawValue: UInt(0)) }
}

alors tous les .Normal travailler comme avant.

2voto

ThePringle Points 126

Apple a ramené l'état de contrôle normal dans les versions plus récentes de Xcode beta. Mettez vous à jour vers la version beta de Xcode la plus récente et utilisez .normal .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X