转载请注明出处

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

作者:小马

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

多视图开发这里用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,其他的还是有必要介绍一下的。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

有时候我们会须要在代码里触发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中,例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">  

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG9ueV9tYWdnaWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">    

代码下载地址:

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

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

IOS学习之斯坦福大学IOS开发课程笔记(第六课)的更多相关文章

  1. ios专题 - 斯坦福大学iOS开发公开课总结

    转自:http://blog.devtang.com/blog/2012/02/05/mvc-in-ios-develop/ 前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的”ipho ...

  2. 斯坦福大学IOS开发课程笔记(第七课第一部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/31462099 作者:小马 这节课的内容太多,分两部分介绍.本节课主要是介绍怎样开发 ...

  3. [斯坦福大学2014机器学习教程笔记]第六章-代价函数(Cost function)

    在这节中主要讲的是如何更好地拟合逻辑回归模型的参数θ.具体来说,要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题. 我们有一个训练集,训练集中有m个训练样本:{ ...

  4. [斯坦福大学2014机器学习教程笔记]第六章-决策界限(decision boundary)

    这一节主要介绍的是决策界限(decision boundary)的概念,这个概念可以帮组我们更好地理解逻辑回归的假设函数在计算什么. 首先回忆一下上次写的公式. 现在让我们进一步了解这个假设函数在什么 ...

  5. 斯坦福大学 iOS 开发公开课总结

     斯坦福大学 iOS 开发公开课总结   前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPho ...

  6. 深度学习课程笔记(六)Error

    深度学习课程笔记(六)Error Variance and Bias: 本文主要是讲解方差和偏差: error 主要来自于这两个方面.有可能是: 高方差,低偏差: 高偏差,低方差: 高方差,高偏差: ...

  7. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  8. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...

  9. iOS学习——(转)iOS中关于通知的使用

    在移动端开打过程中,经常会用到通知和推送,例如有短信来了需要通知提示,手机横屏了需要通知提示,插上耳机了需要通知提示等等,我们可以根据这些通知采取对应的动作.iOS系统自身定义了很对通知,但是在开发过 ...

随机推荐

  1. [poj 2480] Longge's problem 解题报告 (欧拉函数)

    题目链接:http://poj.org/problem?id=2480 题目大意: 题解: 我一直很欣赏数学题完美的复杂度 #include<cstring> #include<al ...

  2. jquery-validator中js校验及标签校验的使用

    jquery-validator中js校验及标签校验的使用: 1.项目中引入jquery.validate.js  官方网站:http://bassistance.de/  http://jquery ...

  3. JavaScript总结(4)

    如何绑定事件 程序员可以编写代码,要求页面在发生了某些事件时调用相应的JavaScript语句或函数,这被称为事件的绑定.事件的绑定有3种方式.1)在HTML标记中直接声明,这是最常见的一种做法.语法 ...

  4. .net 操作INI文件

    using System.Runtime.InteropServices; using System.Text; namespace FaureciaManager { public class Fi ...

  5. GoldenGate 异常处理预案

    异常处理一般步骤 如果GoldenGate复制出现异常,可以通过以下步骤尝试解决问题: 1)        通过ggsci>view report命令查找ERROR字样,确定错误原因并根据其信息 ...

  6. ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(..

    chr(9) tab空格       chr(10) 换行      chr(13) 回车        Chr(13)&chr(10) 回车换行       chr(32) 空格符      ...

  7. BZOJ 3110 [Zjoi2013]K大数查询(整体二分)

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 11654  Solved: 3505[Submit][St ...

  8. awk 基础的用法

    基本的awk执行过程#passwd文件的第二行的第一列和第二列[root@oldboyedu01-nb ~]# awk -F ":" 'NR==2{print $1,$2}' /e ...

  9. 公路通行税Ceoi99(BFS+图的直径)

    公路通行税(Ceoi99) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! 在PALMIA国家内,有N个城市由公路相连(每条 ...

  10. easyui combobox 获取焦点

    easyui combobox 获取焦点 学习了:http://blog.csdn.net/foart/article/details/14446809 可以直接用: $('#spanZhudaoci ...