Используйте функцию вместо вычисляемого свойства, чтобы обойти эту проблему.
@available(iOS 13.0, *)
func getAppleSignInButton() -> ASAuthorizationAppleIDButton {
let button : ASAuthorizationAppleIDButton
if #available(iOS 13.2, *){
button = ASAuthorizationAppleIDButton(type: .signUp, style: .black)
}else{
button = ASAuthorizationAppleIDButton(type: .signIn, style:.black)
}
button.addTarget(self, action: #selector(appleSignUP), for: .touchDown)
return button
}
Вы также можете отделить ее и оставить ленивую переменную, если хотите.
@available(iOS 13.0, *)
lazy var appleSignInButton: ASAuthorizationAppleIDButton = {
let button = getSignUpOrInButton()
button.addTarget(self, action: #selector(appleSignUP), for: .touchDown)
return button
}()
@available(iOS 13.0, *)
private func getSignUpOrInButton() -> ASAuthorizationAppleIDButton {
if #available(iOS 13.2, *) {
return ASAuthorizationAppleIDButton(type: .signUp, style: .black)
} else {
return ASAuthorizationAppleIDButton(type: .signIn, style:.black)
}
}