How can I make that an user can only access a View only after he/she has completed an action? For example, only access a view if the user has responded correctly to a question in a previous view in Swift 3 for IOS development
-
1That's a very broad question without code. What is your viewController doing? Is it a quiz app where the same stuff's being shown over and over or are you doing some sort of authentication where you're segueing to a new viewController once your question is answered? – Adrian Apr 06 '17 at 03:03
1 Answers
This is a very broad question, but the physics for poets version is you'd want to add some sort of target action method to monitor your textField
. One the question is answered, the user can segue.
One approach would be to have a "next" button that's initially disabled and enabled once the question is correctly answered.
In FirstViewController
, you could have an IBOutlet
to a nextButton
and a textField
, like so:
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var nextButton: UIButton!
You'd also control+drag a segue to SecondViewController
Then, in viewDidLoad
, you could disable the button initially:
nextButton.isEnabled = false
You can't segue when the button is disabled. The moment it's enabled, you can segue by pressing it.
Then, you could have a method you create to monitor your textField
for a correct answer:
// this is the method that monitors your textField
func textFieldDidChange(textField: UITextField) {
if textField.text != "42" {
nextButton.isEnabled = false
}
else {
nextButton.isEnabled = true
}
}
In viewDidLoad
, you'd add a target action after your disable nextButton
. Here's what viewDidLoad
looks like:
override func viewDidLoad() {
super.viewDidLoad()
// this sets the button to disabled...
nextButton.isEnabled = false
// this monitors the textField for the correct answer
textField.addTarget(self, action: #selector(textFieldDidChange(textField:)), for: .editingChanged)
}
Here's a repo I created for you.
-
thank you so much!! I have been struggling with this one but everything is clear now! thank you really much! :D – Francisco Ruiz Apr 06 '17 at 22:31
-
If that helped you, please accept the answer and click up the up arrow :) – Adrian Apr 07 '17 at 14:30