IOS学习之斯坦福大学IOS开发课程笔记(第六课)
转载请注明出处
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开发课程笔记(第六课)的更多相关文章
- ios专题 - 斯坦福大学iOS开发公开课总结
转自:http://blog.devtang.com/blog/2012/02/05/mvc-in-ios-develop/ 前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的”ipho ...
- 斯坦福大学IOS开发课程笔记(第七课第一部分)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/31462099 作者:小马 这节课的内容太多,分两部分介绍.本节课主要是介绍怎样开发 ...
- [斯坦福大学2014机器学习教程笔记]第六章-代价函数(Cost function)
在这节中主要讲的是如何更好地拟合逻辑回归模型的参数θ.具体来说,要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题. 我们有一个训练集,训练集中有m个训练样本:{ ...
- [斯坦福大学2014机器学习教程笔记]第六章-决策界限(decision boundary)
这一节主要介绍的是决策界限(decision boundary)的概念,这个概念可以帮组我们更好地理解逻辑回归的假设函数在计算什么. 首先回忆一下上次写的公式. 现在让我们进一步了解这个假设函数在什么 ...
- 斯坦福大学 iOS 开发公开课总结
斯坦福大学 iOS 开发公开课总结 前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPho ...
- 深度学习课程笔记(六)Error
深度学习课程笔记(六)Error Variance and Bias: 本文主要是讲解方差和偏差: error 主要来自于这两个方面.有可能是: 高方差,低偏差: 高偏差,低方差: 高方差,高偏差: ...
- Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计
Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
blog.csdn.net/totogo2010/article/details/8205810 目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...
- iOS学习——(转)iOS中关于通知的使用
在移动端开打过程中,经常会用到通知和推送,例如有短信来了需要通知提示,手机横屏了需要通知提示,插上耳机了需要通知提示等等,我们可以根据这些通知采取对应的动作.iOS系统自身定义了很对通知,但是在开发过 ...
随机推荐
- poj--1904--King's Quest(scc建图)
King's Quest Time Limit: 15000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submit ...
- MetaSploit攻击实例讲解------Metasploit自动化攻击(包括kali linux 2016.2(rolling) 和 BT5)
不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)里Metasploit连接(包括默认和自定义)的PostgreSQL数据库 Kali linux 2016.2(Ro ...
- AngularJS 导航栏动态添加.active
在传统jQuery中,实现导航栏动态添加.active类的思路比较简单,就是当点击的时候,清除其他.active,然后给当前类加上.active. 但是在AngularJS中,就不能再采用这种jQue ...
- <Sicily>Prime Palindromes
一.题目描述 The number 151 is a prime palindrome because it is both a prime number and a palindrome (it i ...
- Unity API 解析(13)—— Vector3 类
三维向量或三维坐标点 normalized —— 单位化向量 返回方向相同模长为1的向量 sqrMagnitude —— 模长平方 Scale —— 向量缩放 Angle —— 两向量夹角 Cross ...
- ArchLinux 设置时间同步和硬件时间同步错误 No usable clock interface found
笔记本不知道怎么了,总是时间对不上 硬件时间也设置不了,只能时间同步了 手动时间同步 ntpdate即可,ntp服务器在这里用这两个就好了 cn.ntp.org.cn 或 edu.ntp.org.cn ...
- 单调队列&单调栈归纳
单调队列 求长度为M的区间内的最大(小)值 单调队列的基本操作,也就是经典的滑动窗口问题. 求长度为M的区间内最大值和最小值的最大差值 两个单调队列,求出长度为M的区间最大最小值的数组,分别求最大最小 ...
- linux一个网卡添加多个虚IP
[root@localhost ~]# ifconfig bond0:0 10.0.0.202 netmask 255.255.255.255 broadcast 10.0.0.255 up 摘自:h ...
- 百度地图API的使用示例
刚刚工作的时候写过百度地图API文档,那时候没有记录到技术博客里面,今天在群里看见有个姑娘在问这个问题,重温了一遍,这个API还算好用.百度地图API,集成简单好用,全面,兼容问题,文档全面: 官方文 ...
- Win10平台下通过VMware虚拟机安装Win7、Ubuntu、Mac
1.安装VMware14.1.1 下载地址:https://download.csdn.net/download/jasonczy/10611423 产品秘钥: CG54H-D8D0H-H8DHY-C ...