Zhandos.Nurakhmetov
Zhandos.Nurakhmetov

Reputation: 169

Go back to previous view controller with help of swipe back (to the left)

I have 2 view controllers. 1: Login page(Main View Controller) 2:Sign Up page.Lets assume that I want to go back from Sign Up page to Login page . How to solve this problem(with Navigation Controller), I am new in swift and iOS . Here is my code in AppDelegate.swift.

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    self.window?.backgroundColor = UIColor.whiteColor()
    self.window?.rootViewController = ViewController()
    self.window?.makeKeyAndVisible()

    return true
}

Upvotes: 3

Views: 8645

Answers (2)

Arun Gupta
Arun Gupta

Reputation: 2636

As per your question i think you have already created the login page, Sign Up page and is able to navigate to Sign Up page. Since you are using Navigation Controller you must be using push to viewcontroller. You can add a barbutton on left, define a action on it as below

var b = UIBarButtonItem( title: "Back To Login", style: .Plain, target: self, action: "backToLogin:" ) 

func backToLogin(sender: UIBarButtonItem) {
    self.navigationController?.popViewControllerAnimated(true)
 }

For swipe functionalty:

var leftGesture = UISwipeGestureRecognizer(target: self, action: Selector("swipeToLogin:")) 
leftGesture.direction = .Left 
self.view.addGestureRecognizer(leftGesture)

func swipeToLogin(sender:UISwipeGestureRecognizer) {

self.navigationController?.popViewControllerAnimated(true)
}

Upvotes: 1

swiftBoy
swiftBoy

Reputation: 35783

Embed-In navigation controller programmatically

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.

        UINavigationBar.appearance().backgroundColor = UIColor.whiteColor()

        let loginViewController: LoginViewController = LoginViewController(nibName: "LoginViewController", bundle: nil)
        let navController: UINavigationController = UINavigationController(rootViewController: loginViewController)
        window!.makeKeyAndVisible()
        window!.addSubview(navController.view!)

        return true
    }

Embed-In navigation controller Using Storyborad

To enable navigation controller you need to embed-in your loginViewController in Navigation controller

Open Storyboard --> select loginviewcontroller --> Editor (in Xcode menu) --> Embed in --> Navigation controller

enter image description here

you can see result looks like

enter image description here

then just update app delegate method to change the navigation bar background color

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.

        UINavigationBar.appearance().backgroundColor = UIColor.whiteColor()

        return true
    }

In LoginViewController controller add Right swipe gesture in viewDidLoad

override func viewDidLoad() {
        super.viewDidLoad()

        let swiperight: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(LoginViewController.swiperight(_:)))
        swiperight.direction = .Right
        self.view!.addGestureRecognizer(swiperight)   
    }

    func swiperight(gestureRecognizer: UISwipeGestureRecognizer) {
            //Do what you want here
            //Load Signup view controller here

func swiperight(gestureRecognizer: UISwipeGestureRecognizer) {
        //Load Signup view controller here
        let signupHomeViewController: SignupHomeViewController = SignupHomeViewController(nibName: nil, bundle: nil)
        // and push it onto the 'navigation stack'
        self.navigationController?.pushViewController(signupHomeViewController, animated: true)

    }

    }

In SignupViewController controller add Left swipe gesture in viewDidLoad

override func viewDidLoad() {
        super.viewDidLoad()

        let swipeleft: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(SignupViewController.swipeleft(_:)))
        swipeleft.direction = .Left
        self.view!.addGestureRecognizer(swipeleft) 
    }

 func swipeleft(gestureRecognizer: UISwipeGestureRecognizer) {
        //Do what you want here

        //Pop back to login view controller

    }

Upvotes: 3

Related Questions