加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

UINavigationController视图控制器切换(二)

发布时间:2020-12-14 01:49:27 所属栏目:百科 来源:网络整理
导读:上节地址:http://blog.csdn.net/lwjok2007/article/details/48346719 我们接着上节继续看返回指定ViewController 首先再创建两个UIViewController的子类 分别命名:ThirdViewController,ForthViewController 然后我们分别在SecondViewController 和 ThirdVi

上节地址:http://blog.csdn.net/lwjok2007/article/details/48346719

我们接着上节继续看返回指定ViewController

首先再创建两个UIViewController的子类

分别命名:ThirdViewController,ForthViewController


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

SecondViewController代码

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代码


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,36))
        btn.setTitle("弹出第四个视图",forControlEvents: UIControlEvents.TouchDown)
        self.view.addSubview(btn)
    }
    func openAct(){
        let forthVC=ForthViewController()
        self.navigationController?.pushViewController(forthVC,sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

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

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

        let btn=UIButton(frame: CGRectMake(20,36))
        btn.setTitle("回到第一个页面",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,36))
        btn2.setTitle("回到第二个页面",forState: UIControlState.Normal)
        btn2.setTitleColor(UIColor.blackColor(),forState: UIControlState.Normal)
        btn2.tag=92
        btn2.addTarget(self,forControlEvents: UIControlEvents.TouchDown)
        self.view.addSubview(btn2)
        
        let btn3=UIButton(frame: CGRectMake(20,220,36))
        btn3.setTitle("回到第三个页面",forState: UIControlState.Normal)
        btn3.setTitleColor(UIColor.blackColor(),forState: UIControlState.Normal)
        btn3.tag=93
        btn3.addTarget(self,forControlEvents: UIControlEvents.TouchDown)
        self.view.addSubview(btn3)

    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] 来测试一下看能不能跳转首页


好了 基本简单的跳转都实现了。大家有问题欢迎加群讨论

苹果开发群 :414319235 欢迎加入 欢迎讨论问题

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读