Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift: Navigate to new ViewController using button

I have a single view application which connects to parse and verifies user log in information and updates a UILabel saying "Yay, You've logged in sucessfully" - Now I want it to navigate to a new view (Which will be the main part of the app).

I have dragged a new view controller onto the storyboard and Ctrl-Drag the button and linked it to the new controller with show. However, the moment I load the app and click the button it goes straight to the new view. I need it to only go there if the right part of the if-else statement is triggered.

Does this make sense? Thank for any help guys. much appreciated.

EDIT

The if statement is:

if usrEntered != "" && pwdEntered != "" {
        PFUser.logInWithUsernameInBackground(usrEntered, password:pwdEntered) {
            (user: PFUser!, error: NSError!) -> Void in
            if user != nil {
                self.messageLabel.text = "You have logged in";
            } else {
                self.messageLabel.text = "You are not registered";
            }
        }
    }

and its located in the ViewController.swift file

like image 873
DannieCoderBoi Avatar asked Nov 23 '14 22:11

DannieCoderBoi


People also ask

How do I open a new view in Swift?

Choose File > New > File, select iOS as the platform, select the “SwiftUI View” template, and click Next. Name the new file MapView. swift and click Create.


1 Answers

First off as I explain in this answer, you need to drag the segue from the overall UIViewController to the next UIViewController, i.e. you shouldn't specifically connect the UIButton (or any IBOutlet for that matter) to the next UIViewController if the transition's conditional:

storyboard segue

You'll also need to assign an identifier to the segue. To do so, you can select the segue arrow then type in an identifier within the right-hand panel:

segue identifier

Then to perform the actual segue, use the performSegueWithIdentifier function within your conditional, like so:

if user != nil {
    self.messageLabel.text = "You have logged in";
    self.performSegueWithIdentifier("segueIdentifier", sender: self)
} else {
    self.messageLabel.text = "You are not registered";
}

where "segueIdentifier" is the identifier you've assigned to your segue within the storyboard.

like image 123
Lyndsey Scott Avatar answered Oct 18 '22 00:10

Lyndsey Scott