iOS-学习笔记-UI-第五天

回顾:

1. 使用代码的方式创建控制器+界面


2. 使用 xib 的方式创建控制器的界面


3. 控件

    UILabel、UIButton、UITextField、UIStepper、UISlider、UISwitch


4. UIAlertView、UIActionSheet


5. 委托模式

    a. 参与方:两方

    b. 各自的职责


6. MVC模式

    a. 参与方:三方

    b. 各自的职责

            M: model 模型(数据存储,业务逻辑)

            V:view 视图 (显示界面)

            C:controller 控制器(完成m和v之间的互通)



本周:

1. 多界面的切换

2. 多界面之间的正向及反向传值

3. UIScrollView 滚动视图

4. 练习:APP的欢迎界面

5. UITableView 表视图(2.5天)

6. UINavigation Controller

7. UITabBarController

8. UICollectionController (集合视图)



今天:

1. 多界面的切换(多MVC的切换)

    1.1 实现理念

        界面的切换实际是控制器C之间的切换,每个控制器都有自己独立的视图,不能公用,所以,每换一个界面,其就是更换控制器。

        每一个界面其实都是一个小型的MVC结构,V和C一定是独立的一套,但M可以被多组V+C公用。

    1.2 如何实现

        从A推出B,则使用控制器的presentViewController方法。

        从B推出A,返回到刚才推出他的那个A,则使用控制器的dismissVIewController方法


2. 多界面之间传值

    2.1 正向传值

        a. 当控制器A推出控制器B时,A给B传值的过程(就是在present的过程中传值)


        b. 如何实现?

            因为A推出B,并且A持有B的引用,所以,只要B公开一个用于接受别人传递给他的值,那么A就可以借助B的引用为B赋值,即完成正向传值。



    2.2 反向传值

            a. 控制器A推出控制器B后,当B回到A时的过程中返回给A一个值(就是在dismiss的过程中传值)


            实现方法:

            方式一:

                理念:既然B没有A的引用,无法顺利传值,那么只要在B中公开一个能过存储A引用的属性,这样,在A推出B时,把自己的引用存到B公开的这个属性中,那么B就拥有了A的引用,就可以给A传值,只不过A为了配合B接收传回的值,同样,A也的公开一个属性用于接收B回传的值即可。


            方式二:

                理念:为了避免方是一中,B持有的引用类型过于具体,使得B只有给A回传值,不能更宽泛的给任意类型 回传数值,可以选择委托模式来解决该问题。

                接收数据方:BVC充当委托方,完成接收数据的部分

                显示数据方:AVC充当代理方,只要接收到B发来的消息就立即显示

                

                委托方三件事:

                    (1)定义协议(目的:规范,代理方,告诉代理方它会发什么样的消息)

                    (2)增加属性(目的:记录,代理方 对象的引用)

                    (3)合适的时机,发消息(合适的时机:在某些动作前或动作后,通过使用delegate记录的对象引用,给这个对象发消息)


                代理方三件事:

                    (1)遵守协议

                            (目的:复合委托方delegate属性的要求)

                    (2)实现协议方法

                    (3)将自己设置为委托方的代理,也就是给委托方delegate属性赋值


3. 第三种 实现 多界面的切换的方式

        3.1 引言

            第一种方式,时两个VC之间直接present和dismiss,这次通过引入一个第三方管理者来实现界面之间的切换。引入的第三方管理者:UINavigationController(导航控制器)


        3.2 什么时导航控制器

            UINavigationController继承自UIViewController。

            它本身不带有任何的能够独立显示的视图,但是能够容纳多个控制器的实例,并且通过push和pop方法实现,在多个控制器之间进行切换,从而实现界面的切换。



        3.3 使用导航控制器的好处?

            能够更清晰的记录界面的行进路线,可以基于这个路线, 回到任意位置。


        3.4 如何使用导航控制器?

            (1)创建导航控制器的实例

            (2)为导航控制器设置根VC

            (3)将导航控制器设置为window的根VC

            (4)切换到下一界面时,借助于控制器的navigationController属性,就可以访问到管理这个普通VC上面的那个导航控制器,使用导航控制器的push方法,推出新的VC

            (5)从推出的VC回到上一个界面,也是利用navigationController属性访问上看的管理者,然后使用pop方法。



        3.5 导航控制器中的部分界面

            (1)位于导航控制器界面部分顶部的条目叫做导航栏

                    导航栏可配置的部分分 左,中,有 三部分

                    左侧和右侧 用于容纳一个或多个可点击的特殊按钮

                    中间部分叫做标题

                    如何配置?

                    标题:navigationItem.title

                    左侧:navigationItem.leftBarButtonItem

                    右侧:navigationItem.rightBarButtonItem

                        按钮的类型:UIBarButtonItem




            (2)位于导航控制器界面部分底部的条目叫做工具栏








作业:

    1.选作:使用block实现值的回传



    2.星座运程APP

    a.界面1:有1个按钮,请选择您的星座,当用户点击值按钮时,跳转到第二个界面

    b.假面2:有12个星座(可以做成12个按钮),选择其中一个星座,点击后,返回到第一个界面

    c.界面1:显示选中的那个星座的运程说明


    3.文本创建器(待更新)






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值