IOS开发学习笔记(导航控制器,视图控制器,模态)

本文介绍如何在Swift中创建和使用导航视图控制器,包括设置导航栏标题、按钮及视图,实现视图间的跳转与返回,并演示模态显示与关闭的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建导航视图控制器

先在AppDelegate类下


func application()下

  //根据一个根视图控制器创建一个导航视图控制器

        let vc =ViewController()

        let navc =UINavigationController(rootViewController: vc)

       

        //将应用的根视图控制器设置为导航视图控制器

        window =UIWindow(frame: UIScreen.mainScreen().bounds)

        window?.rootViewController = navc

        window?.makeKeyAndVisible()


运行后得到一个空的导航栏

每一个被导航控制器所管理的视图控制器都有一个navigationItem(这里面包括了做按钮,右按钮,中间标题,中间视图)


在viewContorller类下

        //设置导航栏的标题

        navigationItem.title ="Setting"


   //设置导航栏左按钮(UIBarButtonItem

        let leftBarBtn =UIBarButtonItem(barButtonSystemItem: .Play, target:self, action: "leftBtn")

       

       navigationItem.leftBarButtonItem = leftBarBtn



     //设置导航栏右按钮

        let rightBarBtn =UIBarButtonItem(title: "next", style:UIBarButtonItemStyle.Plain, target:self, action: "rightBtn")

      

        navigationItem.rightBarButtonItem = rightBarBtn



   //设置中间视图

        let segment =UISegmentedControl(items: ["左",""])

        segment.frame =CGRectMake(0,0, 100,30)

        //当前选择的视图(从0开始)

        segment.selectedSegmentIndex =0

        navigationItem.titleView = segment



   //本类中(视图控制器)访问navigationController就是获取到本视图控制器所在的导航视图控制器

        //导航栏是否隐藏

        navigationController?.navigationBarHidden =false//不隐藏


  //背景颜色

        navigationController?.navigationBar.backgroundColor =UIColor.cyanColor()

 //导航栏本身的颜色

        //navigationController?.navigationBar.barTintColor = UIColor.blueColor()

  //导航栏元素的颜色

        navigationController?.navigationBar.tintColor =UIColor.blackColor()

  //导航栏半透明效果(开启时坐标原点将出现在导航栏左上角)

        navigationController?.navigationBar.translucent =true





视图控制器的跳转

创建SecendViewController类

    func rightBtn(){

        //跳转第二个控制器页面

        //创建第二个控制器

        let secondvc =SecendViewController()

        //使用当前控制器所在的导航视图控制器跳转到第二个控制器

        navigationController?.pushViewController(secondvc, animated:true)

        println("right")//当按下按钮时打印“right”

    }

    

    func leftBtn(){

        println("left")//当按下按钮时打印“left”

    }

运行效果如下



返回上一页面

在SecendViewController类下

    //创建左按钮

        let leftBtn =UIBarButtonItem(title: "Back", style:UIBarButtonItemStyle.Plain, target:self, action: "leftBtn")

        navigationItem.leftBarButtonItem = leftBtn

当前页面显示的一定是栈顶的视图控制器

栈的特点:先进后出, 后进先出。




   func leftBtn(){

        //secondvc出栈 popViewControllerAnimated:将显示在栈顶的控制器出栈(返回上一个页面)pushViewController(进入下一个页面)

        navigationController?.popViewControllerAnimated(true)

        println("返回")//返回后打印


    }



模态

创建按钮

        let motaiBtn =UIButton(frame: CGRectMake(100,100, 100,100))

        motaiBtn.setTitle("弹出", forState:UIControlState.Normal)

        motaiBtn.layer.borderColor =UIColor.blackColor().CGColor//边框颜色

        motaiBtn.layer.borderWidth =1 //边框宽度

        motaiBtn.setTitleColor(UIColor.blackColor(), forState:UIControlState.Normal)//字体颜色

        motaiBtn.addTarget(self, action:"persentTosix", forControlEvents:UIControlEvents.TouchUpInside)//按钮点击事件

        view.addSubview(motaiBtn)

        


  //按钮模态显示第六个视图控制器

    func persentTosix(){

        let six =SixthViewController()

        //模态显示,跟导航视图控制器没有关系

        //completion模态显示完成之后要执行的闭包

        presentViewController(six, animated:true) { () -> Voidin

            //模态显示完成之后要执行的代码

            println("模态完成")//模态完成后打印

        }

    }


SixthViewController类下

     let backBtn =UIButton(frame: CGRectMake(50,100, 100,50))

        backBtn.setTitle("返回", forState:UIControlState.Normal)

        backBtn.addTarget(self, action:"back", forControlEvents: UIControlEvents.TouchUpInside)

        backBtn.layer.borderWidth =1

        backBtn.setTitleColor(UIColor.blackColor(), forState:UIControlState.Normal)//通常状态下按钮字体颜色

        backBtn.setTitleColor(UIColor.redColor(), forState:UIControlState.Highlighted)//点击时按钮字体颜色

        backBtn.layer.cornerRadius =50//边框圆角

        view.addSubview(backBtn)



//按钮点击事件

  func back(){

    

    //第一种dismissViewController()模态消失过程不可定制

    //第二种dismissViewControllerAnimated模态消失可定制化(是否需要动画,模态结束后执行代码段)

       dismissViewControllerAnimated(true, completion: { () ->Void in

        println("模态消失")

       })

    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值