【问题标题】:Go back to previous view controller with help of swipe back (to the left)借助向后滑动(向左)返回上一个视图控制器
【发布时间】:2016-07-13 01:36:25
【问题描述】:

我有 2 个视图控制器。 1:登录页面(主视图控制器) 2:注册页面。假设我想从注册页面返回到登录页面。如何解决这个问题(使用导航控制器),我是 swift 和 iOS 的新手。这是我在 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
}

【问题讨论】:

    标签: ios swift uinavigationcontroller back-button sos


    【解决方案1】:

    以编程方式嵌入导航控制器

     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
        }
    

    使用 Storyborad 嵌入导航控制器

    要启用导航控制器,您需要将 loginViewController 嵌入到导航控制器中

    打开 Storyboard --> 选择 loginviewcontroller --> Editor (in Xcode menu) --> Embed in --> Navigation controller

    你可以看到结果看起来像

    然后只需更新应用程序委托方法以更改导航栏背景颜色

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            // Override point for customization after application launch.
    
            UINavigationBar.appearance().backgroundColor = UIColor.whiteColor()
    
            return true
        }
    

    LoginViewController 控制器中,在 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)
    
        }
    
        }
    

    SignupViewController 控制器中,在 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
    
        }
    

    【讨论】:

    • 如何用导航控制器解决这个问题。因为有人告诉我,如果我用导航控制器做这个,它会自动工作?
    • 谢谢,但我没有故事板 ;) 我在 SnapKit 的帮助下以编程方式完成此操作
    • @Zhandos.Nurakhmetov 没有问题我以编程方式更新,以防您不使用情节提要。
    【解决方案2】:

    根据您的问题,我认为您已经创建了登录页面、注册页面,并且能够导航到注册页面。由于您使用的是导航控制器,因此您必须使用推送到视图控制器。您可以在左侧添加一个 barbutton,在其上定义一个操作,如下所示

    var b = UIBarButtonItem( title: "Back To Login", style: .Plain, target: self, action: "backToLogin:" ) 
    
    func backToLogin(sender: UIBarButtonItem) {
        self.navigationController?.popViewControllerAnimated(true)
     }
    

    滑动功能:

    var leftGesture = UISwipeGestureRecognizer(target: self, action: Selector("swipeToLogin:")) 
    leftGesture.direction = .Left 
    self.view.addGestureRecognizer(leftGesture)
    
    func swipeToLogin(sender:UISwipeGestureRecognizer) {
    
    self.navigationController?.popViewControllerAnimated(true)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      相关资源
      最近更新 更多