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

     


  • 相关阅读:
    数据结构——二叉搜索树、B树、B-树
    计算机组成原理——指令流水线
    计算机组成原理——微指令的控制字段
    计算机组成原理——关于数据对齐存储
    program
    数据库——视图(View)相关
    软件测试——性能测试、压力测试、负载测试等详解
    软件测试——Stub和Mock
    虚拟机的性能监控与故障处理工具
    Linux中安装tomcat后,window中访问不到tomcat的欢迎界面问题
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7050160.html
Copyright © 2011-2022 走看看