UIControlState.Normal недоступен
до UIButton
экземпляров, вы смогли пройти в UIControlState.Normal
на setTitle
или setImage
. .Normal
больше нет, что я должен использовать вместо этого?
let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
btn.setTitle("title", for: .Normal) // does not compile
(это каноническая пара Q&A, чтобы предотвратить поток повторяющихся вопросов, связанных с этим UIButton
и UIControl
изменения с iOS 10 и Swift 3)
3 ответов
обновление Swift 3:
похоже, что Xcode 8 / Swift 3 принес UIControlState.normal
обратно:
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
переименовано в UIControlState.normal
и удален из iOS SDK. Для" обычных " параметров используйте пустой массив для создания пустого набора параметров.
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: [])
The .Normal
удаляется (iOS 10 DP1), вы можете использовать []
или UIControlState(rawValue: UInt(0))
заменить .Normal
, Если вы не хотите менять коды вокруг(в случае, если apple добавит его снова или вам не нравится []
), вы можете просто добавить один раз этот код
extension UIControlState {
public static var Normal: UIControlState { return [] }
}
или
extension UIControlState {
public static var Normal: UIControlState { return UIControlState(rawValue: UInt(0)) }
}
затем все .Normal
работать как и раньше.
Apple вернула нормальное состояние управления в более поздних версиях бета-версии Xcode. Обновление до последней бета-версии Xcode и использовать .normal
.