IOS学习之斯坦福大学IOS开发课程笔记(第六课)

转载请注明出处

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

作者:小马

这节课主要讲述多个MVC是如何协同工作的。到目前为止,所有的课程都只是涉及到一个视图。从这节课开始,将会持到多视图应用的例子。

多视图开发这里用navigationController举例子。这个也是比较常用的。如上图所示,一个 navigation Controller(MVC)会指向一个rootViewController(另一个MVC),这个是第一个要显示的MVC。

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

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

我们通过菜单栏来添加一个导航控制器。把它嵌入到我们的rootViewController里来,很简单。

上图向我们展示了带导航功能的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];
    }

}

下面是代码演示时间。

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

我上面已经分析了一些相关的核心代码,这里不多说了。不过想要详细的介始另外一个知识,就是如何重用上节课的代码。操作不是很麻烦,但是很重要。

首先我们从原来的Happiness工程文件夹找到下面四个文件,并拖到Psychologist的工程中,如下图所示:

然后我们在storyboard里加一个新的viewcontroller,并给他增加一个view,接着设置controller对应的类为HappinessViewController, view对应的类为FaceView,如下图所示:

  

还有一点,要把view和controller连接起来,如下图所示:

最终运行的效果如下:

    

代码下载地址:

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

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

IOS学习之斯坦福大学IOS开发课程笔记(第六课)

时间: 2024-12-30 09:13:59

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

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

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/32163347 作者:小马 本篇是demo演示,程序其实就是上节课的心理学家那个demo, 不过在这个demo的基础上,把它作成一个通用版,可以自动识别当前运行的设备是iphone还是ipad,然后有不同的显示效果.所以,还是打开原来的Psychologist工程,在开始之前,我会用第五课讲的自动布局知识,让视图能在横屏模式下也可以正常显示.这一部分不细讲,参考第五课. 下面就可以

斯坦福大学IOS开发课程笔记(第八课)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/37370159 作者:小马 这节课讲视图的生命周期,网络视图,图像视图以及 滚动视图这些概念以及相关的demo演示.前两个概念比较简单,看一看就明白,我这里只是写图像视图以及 滚动视图的课程笔记. UIImageView用来显示图片.在下面的代码示例中,会有详细的步骤说明,有时候一些简单的应用,可以直接通过xcode设置,甚至不需要写代码. 这幅图向我们展示了scroll view

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

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/31462099 作者:小马 这节课的内容太多,分两部分介绍.本节课主要是介绍怎样开发基于ipad的应用程序.涉及到了一些仅仅有ipad才有的类,接口等. 先讲到UIToolbar工具栏.经常使用的UI控件.在工具栏上button一样的东西叫UIBarButtonItems,能够像一般button一样操作它,比方建立outlet,action等.使用的时候仅仅要从工具箱里拖到视图中就

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

 斯坦福大学 iOS 开发公开课总结 前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 “iPhone 开发公开课 “ 了.此公开课在以前叫做<iPhone 开发教程>,今年由于平板电脑的流行,所以也加入了 ipad 开发相关的课程.在 网易公开课 上,有 该教程 的 2010 年录象,并且前面 15 集带中文字幕文件,非常适合初学者学习. 在这里顺便说一下,网易公开课上的 28 集其实并不需要全部看完.真正的课程只有前面 12 集.后面的课程都是请一些业界的名人讲他们成功的

斯坦福大学iOS开发作业

今晚把斯坦福大学iOS开发视频的第二课看完了,同时把教授布置的作业也顺手做了下. 教授布置的作业是:在已有的纸牌游戏APP程序基础上拓展,使每次翻牌时出现随机的花色. 其实这个很简单,就是把教授上课写好的类进行实例化,同时获取纸牌的具体内容,即contents属性. 下面我就把做完的APP和APP类结构的图贴上来.          APP运行图:           that's all. Thank you!! 斯坦福大学iOS开发作业

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

2011年冬季斯坦福大学公开课 iOS应用开发教程是个很经典的教程,这个老头讲的很给力.做笔记总结. 第一课名称: MVC and Introduction to Objective-C 这课的主要内容有: iOS的概述  -什么是iOS MVC - 面向对象的概念 Objective-C-介绍下语言的概念 iOS包括四层 内核 内核是mach 4.x BSD UNIX内核 mac OS  10操作系统,是个多任务的UNIX内核,在这层上提供了网络,socket ,安全机制,文件系统,大部分这些

《nodejs+gulp+webpack基础实战篇》课程笔记(六)--附加课

一.多页面分离资源引用,按需引用JS和css 我们前面实现了以下功能:1.新建了一个login模版(用到htmlWebpackPlugin).2.分别把main.js和login.js.reg.js分开写.3.学习了css加载器.我们通过webpack可以打包js文件.自动注入js和CSS引用. 那么我们要加载多页面如何操作呢?现在我们就在/src/tpl 文件夹下新件一个index.html文件,在CSS加入index.css,随便写两个样式,然后在/src/下新建一个index.js,随便写

IOS 学习04 汤姆猫开发

IOS开发,一个简单的汤姆猫开发,截图如下: 1.1以前一直觉得这个小游戏不错,很好玩,现在学习IOS才发现其实这个程序真心很简单,其实这个还不是个完整,还没有声音,以后再来完整. 1.2 创建项目,导入图片,在项目images.xcassets中保存PNG图片,这里只保存6个按键图片,图片文件直接拉进就可以,如下图: 1.3 相信大多数人都玩过这个小游戏,其实这就是一个动画,而动画就是由多个图片连在一起播放的,最后看起来就是动画了. 1.4 知道了动画的原理,那就好办了,我们再来导入按键相对应

Xamarin.iOS学习一:Hello.iOS 入门学习

介绍使用Xamarin开发iOS 在这两个章节里面,我们会使用Xamarin Studio 或者Visual Studio 创建第一个Xamarin.iOS程序并且去理解使用Xamarin开发iOS程序的基础概念.接着我们将会介绍创建和部署iOS程序所需要的工具.概念和步骤. Hello.iOS 快速入门 首先我们将创建一个让用户输入字母和数字并且可以拨打号码的应用程序,最终效果图如下: