У меня есть приложение, которое позволяет пользователям сохранять свой профиль. Чтобы они могли зарегистрироваться, я хочу проверить, согласны ли они с условиями использования приложений. Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь не согласен с ними, они увидят, что alertController сообщает им о согласии. Однако приложение по-прежнему продолжает выполнять оставшуюся часть кода.
func checkIfChecked() {
if self.checkbox.imageView.isHidden == true {
let alert = UIAlertController(title: "Hold up!",message:" You must agree to our Community Guidelines before you can sign up.", preferredStyle: UIAlertController.Style.alert)
let continueButton = UIAlertAction(title: "Got it!", style: .default, handler: {(_ action: UIAlertAction) -> Void in
})
continueButton.setValue(GREEN_Theme, forKey: "titleTextColor")
alert.addAction(continueButton)
self.present(alert, animated: true, completion: nil)
}
if self.checkbox2.imageView.isHidden == true {
let alert = UIAlertController(title: "Hold up!",message:" You must agree to our Terms & Conditions before you can sign up.", preferredStyle: UIAlertController.Style.alert)
let continueButton = UIAlertAction(title: "Got it!", style: .default, handler: {(_ action: UIAlertAction) -> Void in
})
continueButton.setValue(GREEN_Theme, forKey: "titleTextColor")
alert.addAction(continueButton)
self.present(alert, animated: true, completion: nil)
}
}
@objc func handleRegister() {
checkIfChecked()
let hud = JGProgressHUD(style: .dark)
hud.textLabel.text = "Registering!"
hud.show(in: view)
guard let email = emailTextField.text, let password = passwordTextField.text, let name = nameTextField.text, let phonenumber = phonenumberTextField.text else {
print("Error")
return
остаток кода.... }
}
если чекбоксы отмечены, проблем нет. Но если они не проверены, то информация о пользователях все равно будет сохранена в базе данных без их входа в систему. Поэтому я пытаюсь остановить выполнение handleRegister после вызова checkIfChecked, только если флажки не были отмечены.
Не уверен, что это самый безопасный способ решить проблему, с которой я столкнулся, но то, что я сделал, чтобы решить проблему, находится внутри handleRegister, я добавил
checkIfChecked()
это должно быть после checkIfChecked таким образом, чтобы alertControllers мог показать.
if self.checkbox.imageView.isHidden == true {
return
} else if self.checkbox2.imageView.isHidden == true {
return
}
он останавливает выполнение кода, если эти строки верны.
Используйте блок завершения с замыканием в функции оповещения.