zoukankan      html  css  js  c++  java
  • IOS学习之斯坦福大学IOS开发课程笔记(第六课)

    转载请注明出处

    http://blog.csdn.net/pony_maggie/article/details/28398697

    作者:小马


    这节课主要讲述多个MVC是怎样协同工作的。到眼下为止。全部的课程都仅仅是涉及到一个视图。从这节课開始,将会持到多视图应用的样例。



    多视图开发这里用navigationController举样例。这个也是比較经常使用的。如上图所看到的,一个 navigation Controller(MVC)会指向一个rootViewController(还有一个MVC),这个是第一个要显示的MVC。

     

     


    在导航控制器里,连接各个MVC是通过一个叫segue的东东。在storyboard里仅仅须要按住control键,从一个controller上的某个控件(比方button)拖到还有一个controller上就可以。这样就建立了一个segue,然后我们能够给这个segue设置标识符,目的是为了能够在代码里控制它。比方以下的演示样例代码:

    - (void)setAndShowDiagnosis:(int)diagnosis
    {
        self.diagnosis = diagnosis;
        [self performSegueWithIdentifier:@"ShowDiagnosis" sender:self];
    }


     


    我们通过菜单条来加入一个导航控制器。把它嵌入到我们的rootViewController里来,非常easy。

     

     


    上图向我们展示了带导航功能的app长什么样。中间部分是它的view(UIView),上面中间部分是导航栏。 中间的文字是title,左边是backbutton,它是一个UIBarButtonItems控件。

     

     


    实际使用时,会很少的机会用到popViewControllerAnimated这个函数。大部分情况下我们会用上面提到的back button来回到上一级的view。

     

     

     


    这里提到segue分为非常多种,尽管这里仅仅是用到push,其他的还是有必要介绍一下的。

    请细致看上图的英文说明。不难理解。

     

     

     


    有时候我们会须要在代码里触发segue(而不是通过上面提到的拖)。方法是通过performseguewithidentifier函数。什么情况下会有这个须要呢? 比方我们有个segue仅仅在某种条件才会建立。參看上面的演示样例代码。



    关于segue另一个很重要,并且经常使用的方法,prepareforsegue函数。

    我们常在这个函数里向将要通过导航切换过去的那个controller来传递数据。也就是说这个函数是发生在新的视图被载入前的某个时刻。演示样例代码中也有这个:

    //传递数据
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([segue.identifier isEqualToString:@"ShowDiagnosis"])
        {
            [segue.destinationViewController setHappiness:self.diagnosis];
        }
        else if ([segue.identifier isEqualToString:@"celebrity"])
        {
            [segue.destinationViewController setHappiness:100];
        }
        else if ([segue.identifier isEqualToString:@"serious"])
        {
            [segue.destinationViewController setHappiness:20];
        }
        else if ([segue.identifier isEqualToString:@"TV kook"])
        {
            [segue.destinationViewController setHappiness:50];
        }
            
    }


    以下是代码演示时间。

     

    我们将创建一个新的project。叫Psychologist(心里学家), 这是一个非常easy的demo,它依据我们回答的问题,设置”幸福”的程度,然后改变笑脸(还记上节课的happiness演示样例吗)的微笑程度。所以这里会用上节课的一些代码。


    我上面已经分析了一些相关的核心代码,这里不多说了。只是想要具体的介始另外一个知识,就是怎样重用上节课的代码。操作不是非常麻烦。可是非常重要。

     

    首先我们从原来的Happinessproject目录找到以下四个文件。并拖到Psychologist的project中,例如以下图所看到的:


     

    然后我们在storyboard里加一个新的viewcontroller,并给他添加一个view,接着设置controller相应的类为HappinessViewController, view相应的类为FaceView,例如以下图所看到的:

      

     

    另一点,要把view和controller连接起来,例如以下图所看到的:

     

     

    终于执行的效果例如以下:

        

     

    代码下载地址:

    https://github.com/pony-maggie/Psychologist

    http://download.csdn.net/detail/pony_maggie/7442627

     


  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7050160.html
Copyright © 2011-2022 走看看