您的位置:首页 > 移动开发 > Swift

swift uinavigationController 视图控制器切换(二)

2015-11-09 13:43 441 查看
我们接着上节继续看返回指定ViewController

首先再创建两个UIViewController的子类

分别命名:ThirdViewController,ForthViewController

然后我们分别在SecondViewController 和 ThirdViewController上添加button点击后跳转下一个页面

SecondViewController代码

[objc] view
plaincopy

import UIKit  

  

class SecondViewController: UIViewController {  

  

    override func viewDidLoad() {  

        super.viewDidLoad()  

  

        // Do any additional setup after loading the view.  

        self.title="第二个页面"  

          

        let btn=UIButton(frame: CGRectMake(20, 120, 320, 36))  

        btn.setTitle("弹出第三个视图", forState: UIControlState.Normal)  

        btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  

        btn.addTarget(self, action: "openAct", forControlEvents: UIControlEvents.TouchDown)  

        self.view.addSubview(btn)  

          

    }  

    func openAct(){  

        let thirdVC=ThirdViewController()  

        self.navigationController?.pushViewController(thirdVC, animated: true)  

    }  

  

    override func didReceiveMemoryWarning() {  

        super.didReceiveMemoryWarning()  

        // Dispose of any resources that can be recreated.  

    }  

      

  

    /* 

    // MARK: - Navigation 

 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

        // Get the new view controller using segue.destinationViewController. 

        // Pass the selected object to the new view controller. 

    } 

    */  

  

}  

ThirdViewController代码

[objc] view
plaincopy

import UIKit  

  

class ThirdViewController: UIViewController {  

  

    override func viewDidLoad() {  

        super.viewDidLoad()  

  

        // Do any additional setup after loading the view.  

        self.title="第三个页面"  

          

        let btn=UIButton(frame: CGRectMake(20, 120, 320, 36))  

        btn.setTitle("弹出第四个视图", forState: UIControlState.Normal)  

        btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  

        btn.addTarget(self, action: "openAct", forControlEvents: UIControlEvents.TouchDown)  

        self.view.addSubview(btn)  

    }  

    func openAct(){  

        let forthVC=ForthViewController()  

        self.navigationController?.pushViewController(forthVC, animated: true)  

    }  

  

    override func didReceiveMemoryWarning() {  

        super.didReceiveMemoryWarning()  

        // Dispose of any resources that can be recreated.  

    }  

      

  

    /* 

    // MARK: - Navigation 

 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

        // Get the new view controller using segue.destinationViewController. 

        // Pass the selected object to the new view controller. 

    } 

    */  

  

}  

我们执行代码就发现已经可以跳转了

接下来我们给FortthViewController 添加三个button。

[objc] view
plaincopy

let btn=UIButton(frame: CGRectMake(20, 120, 320, 36))  

btn.setTitle("回到第一个页面", forState: UIControlState.Normal)  

btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  

btn.tag=91  

btn.addTarget(self, action: "openAct:", forControlEvents: UIControlEvents.TouchDown)  

self.view.addSubview(btn)  

  

let btn2=UIButton(frame: CGRectMake(20, 170, 320, 36))  

btn2.setTitle("回到第二个页面", forState: UIControlState.Normal)  

btn2.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  

btn2.tag=92  

btn2.addTarget(self, action: "openAct:", forControlEvents: UIControlEvents.TouchDown)  

self.view.addSubview(btn2)  

  

let btn3=UIButton(frame: CGRectMake(20, 220, 320, 36))  

btn3.setTitle("回到第三个页面", forState: UIControlState.Normal)  

btn3.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  

btn3.tag=93  

btn3.addTarget(self, action: "openAct:", forControlEvents: UIControlEvents.TouchDown)  

self.view.addSubview(btn3)  

[objc] view
plaincopy

func openAct(btn:UIButton){  

    if btn.tag==91{  

        //回到首页  

        self.navigationController?.popToRootViewControllerAnimated(true)  

    }else if btn.tag==92{  

        //通过堆栈顺序获取要跳转的视图控制器  

        let vc=self.navigationController?.viewControllers[1] as! UIViewController  

        self.navigationController?.popToViewController(vc, animated: true)  

    }else if btn.tag==93{  

        //返回到上一个页面  

        self.navigationController?.popViewControllerAnimated(true)  

    }  

}  

我们点击按钮看下效果

这里要说明的一点是 跳转到指定ViewController中我们首先调用了NavigationController的viewControllers[1]来获取了要跳转到的视图控制器。视图控制器跳转的时候是按照栈的方式来的.

我们例子中的首页是第一次出现在navigationController中的,所以栈底就是我们需要的首页,我们可以使用viewControllers[0] 来测试一下看能不能跳转首页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: