1 00:00:00,000 --> 00:00:07,880 2 00:00:07,880 --> 00:00:09,800 >> RHED史:欢迎 看到CS50研讨会 - 3 00:00:09,800 --> 00:00:11,630 介绍到iOS。 4 00:00:11,630 --> 00:00:13,290 谢谢大家的光临。 5 00:00:13,290 --> 00:00:16,610 我希望你一样兴奋 因为我对的iOS。 6 00:00:16,610 --> 00:00:22,300 去年,我花了CS50作为二年级学生, 我基本上学会了iOS的我 7 00:00:22,300 --> 00:00:23,490 最终的项目。 8 00:00:23,490 --> 00:00:26,350 ,这是相当 - 9 00:00:26,350 --> 00:00:30,530 嗯,这是不容易的,但也有 很多的支持在线教程。 10 00:00:30,530 --> 00:00:33,760 我真的很希望这 研讨会上,我给你们一个头 11 00:00:33,760 --> 00:00:36,750 开始iOS开发 12 00:00:36,750 --> 00:00:40,490 >> 所以,在iOS开发方面, 主要有两方面的事情,我们 13 00:00:40,490 --> 00:00:42,090 今天想覆盖。 14 00:00:42,090 --> 00:00:43,290 首先,语言 - 15 00:00:43,290 --> 00:00:46,650 该语言将是在 Objective-C语言。我们居然听到 16 00:00:46,650 --> 00:00:47,750 一些真正令人兴奋的。 17 00:00:47,750 --> 00:00:51,500 所以,你可以加入整个苹果 开发者社区,并建立了一些 18 00:00:51,500 --> 00:00:52,940 真正真棒应用程序。 19 00:00:52,940 --> 00:00:58,670 >> 此外,iOS的7是美丽,希望, 对你们中的一些。 20 00:00:58,670 --> 00:01:01,130 但它是有争议的,我知道。 21 00:01:01,130 --> 00:01:05,349 和主要,我想要做的是引导 您通过Objective-C语言,并且还 22 00:01:05,349 --> 00:01:10,650 Xcode中,这是集成 开发环境,你会 23 00:01:10,650 --> 00:01:13,460 工作在为iOS。 24 00:01:13,460 --> 00:01:19,140 >> 因此,在Objective-C中只是一个字。 基本上,它是完全一样的为C, 25 00:01:19,140 --> 00:01:22,790 但有很多其他的事情。 26 00:01:22,790 --> 00:01:27,710 因此,更严格的,它实际上是一个 超集C的这样东西,你 27 00:01:27,710 --> 00:01:32,280 可以用C做的事情,这是 基本上喜欢的pset 0到6,你 28 00:01:32,280 --> 00:01:34,170 可以在Objective-C做的。 29 00:01:34,170 --> 00:01:38,620 >> 所以,不要觉得害怕这个新 你要学习的语言。 30 00:01:38,620 --> 00:01:42,120 你已经介绍了很多了, 因为你都做过C这个过去 31 00:01:42,120 --> 00:01:45,880 学期,除了现在你要去 有很多更多的工作。 32 00:01:45,880 --> 00:01:49,270 而我只是要带领你通过一个 几个例子强调了一些 33 00:01:49,270 --> 00:01:53,920 的,我发现是关键的差异 真正重要的,当我得知 34 00:01:53,920 --> 00:01:57,180 Objective-C的最后一年。 35 00:01:57,180 --> 00:02:00,910 >> 好吧,事实上,这样,其他的点 是,Objective-C的是,很明显, 36 00:02:00,910 --> 00:02:02,200 面向对象的。 37 00:02:02,200 --> 00:02:06,340 我们将讨论一点点 什么是较晚。 38 00:02:06,340 --> 00:02:11,340 基本上,它是怎么样,你曾与 结构在过去的这个pset中,与 39 00:02:11,340 --> 00:02:13,360 节点和其他类似 这样的事情。 40 00:02:13,360 --> 00:02:17,110 只是,在Objective-C,一切都是 一个对象,你可要 41 00:02:17,110 --> 00:02:20,720 绕过指向对象的指针 而非值本身。 42 00:02:20,720 --> 00:02:25,050 因此,它只是一些重要的东西 要牢记。 43 00:02:25,050 --> 00:02:29,140 >> 那么,我们为什么不先从几个 C和之间的差异在句法 44 00:02:29,140 --> 00:02:30,540 Objective-C的? 45 00:02:30,540 --> 00:02:38,310 我想突出的#include,你 众所周知,标准IO.H在C和C + +中,用 46 00:02:38,310 --> 00:02:44,030 在Objective-C语言版的,这 是的#import,然后某种 47 00:02:44,030 --> 00:02:44,790 头文件。 48 00:02:44,790 --> 00:02:48,165 在这种情况下,这将是UIKit中, 你知道,斜线UIKit.h。 49 00:02:48,165 --> 00:02:53,560 它也可能是,你知道,MKMAPVIEW 你削减MKMapview.h如果你想 50 00:02:53,560 --> 00:02:56,370 做一样,你的应用程序里面的地图。 51 00:02:56,370 --> 00:02:57,110 类似这样的事情。 52 00:02:57,110 --> 00:03:01,250 >> 因此,重要的是包括 现在已经改变进口。 53 00:03:01,250 --> 00:03:04,340 但这个想法仍然存在。 54 00:03:04,340 --> 00:03:10,460 你会被导入某种 头文件到你的程序的。 55 00:03:10,460 --> 00:03:14,550 >> 我也想强调的区别 之间的printf和NSLog的。 56 00:03:14,550 --> 00:03:19,760 然而,正如我们前面所说,Objective-C语言 是一个严格的超集 57 00:03:19,760 --> 00:03:22,800 C,表示printf的存在 在Objective-C,太。 58 00:03:22,800 --> 00:03:24,340 不过,大多数人不使用它。 59 00:03:24,340 --> 00:03:28,245 大多数人使用这个NSLog的,因为它 给你一个时间标记,我们会看到 60 00:03:28,245 --> 00:03:29,780 后来在行动。 61 00:03:29,780 --> 00:03:33,560 但是,它通常是一个更加有用 这样打印出来的变量。 62 00:03:33,560 --> 00:03:38,220 >> 我也想强调, 的NSLog发生在一样的 63 00:03:38,220 --> 00:03:41,650 如printf不占位符值 - 64 00:03:41,650 --> 00:03:45,900 所以为%d是一个int, %f是一个浮点数。 65 00:03:45,900 --> 00:03:49,750 不过,我想强调 这个非常最后一个 - 66 00:03:49,750 --> 00:03:52,960 的NSLog%at符号 - 67 00:03:52,960 --> 00:03:55,390 这是一个占位符的对象。 68 00:03:55,390 --> 00:04:01,160 正如我前面说的,Objective-C的交易 几乎大部分的对象, 69 00:04:01,160 --> 00:04:05,020 所以这会在使用的时候你 要打印出来,也许,也许一个 70 00:04:05,020 --> 00:04:08,390 的NSArray或NSDictionary中, 或一个NSString。 71 00:04:08,390 --> 00:04:13,750 >> 所以,也请注意,在我们的NSLog 声明中,我们有一个@符号前面 72 00:04:13,750 --> 00:04:15,380 的报价 - 73 00:04:15,380 --> 00:04:20,769 即以表示字符串,现在, 在Objective-C的对象。 74 00:04:20,769 --> 00:04:23,310 他们不再是简单的字符明星。 75 00:04:23,310 --> 00:04:25,530 他们的对象,并 同样的对待。 76 00:04:25,530 --> 00:04:28,690 >> 所以,这真的很重要,当 您使用的NSLog它需要在一个NS 77 00:04:28,690 --> 00:04:32,580 字符串,这意味着你将有 包括一个在前面你 78 00:04:32,580 --> 00:04:34,270 引号。 79 00:04:34,270 --> 00:04:38,290 这就是为什么你看到的,在这里,所有的 我的函数调用来此的NSLog,我 80 00:04:38,290 --> 00:04:42,400 有一个在引号的前面,甚至 虽然在%D和%F的是 81 00:04:42,400 --> 00:04:45,200 从C都是一样的 82 00:04:45,200 --> 00:04:47,930 >> 有任何疑问,这么远吗? 83 00:04:47,930 --> 00:04:50,920 我会尽力去通过这个很快,所以 我们可以有更多的时间去工作 84 00:04:50,920 --> 00:04:55,210 在Xcode和Objective-C,所以 那你们可以得到更多的 85 00:04:55,210 --> 00:04:57,630 熟悉它。 86 00:04:57,630 --> 00:05:01,900 >> 接下来,我想强调的东西 概念很重要。 87 00:05:01,900 --> 00:05:05,130 因此,在C中,大多数事情都是函数。 88 00:05:05,130 --> 00:05:06,280 我们做一个函数调用。 89 00:05:06,280 --> 00:05:10,190 我们声明函数这样,用 返回的第一类型,则 90 00:05:10,190 --> 00:05:13,570 函数名,括号,然后 无论参数和类型 91 00:05:13,570 --> 00:05:15,590 这些争论,我们想传递英寸 92 00:05:15,590 --> 00:05:19,970 和Objective-C,因为一切 是一个对象或类 - 93 00:05:19,970 --> 00:05:23,970 如此类和对象有两个条款 大多是互为同义词, 94 00:05:23,970 --> 00:05:28,270 所以我可以使用它们互换 整个研讨会。 95 00:05:28,270 --> 00:05:34,090 >> 但是,你会看到,我们在方法 Objective-C语言,而不是功能。 96 00:05:34,090 --> 00:05:36,390 和方法属于对象。 97 00:05:36,390 --> 00:05:38,950 因此,正如,也许拿 例如,节点 - 98 00:05:38,950 --> 00:05:40,250 我们的类型[听不清] 99 00:05:40,250 --> 00:05:44,390 从节点6的pset或5 - 100 00:05:44,390 --> 00:05:49,590 我们有一句话,房地产, 或下一个节点的指针。 101 00:05:49,590 --> 00:05:53,880 方法是简单的内部函数 的某种结构。 102 00:05:53,880 --> 00:05:57,510 >> 所以,在这种情况下,该结构将是 的对象,则该方法是 103 00:05:57,510 --> 00:05:59,260 东西属于一个对象。 104 00:05:59,260 --> 00:06:02,650 这是你将如何声明, 排序,方法。 105 00:06:02,650 --> 00:06:07,990 你会开始,再次返回 类型 - 所以,我试图色 106 00:06:07,990 --> 00:06:12,990 这里编写的关键词,让你们 可以看到,至少格式化 107 00:06:12,990 --> 00:06:17,650 函数之间的相似性 声明和方法声明。 108 00:06:17,650 --> 00:06:21,990 所以,你开始,你就知道,一回 类型 - 在这种情况下,它是一个数组,或 109 00:06:21,990 --> 00:06:23,910 一个NSArray指针 - 110 00:06:23,910 --> 00:06:26,710 然后你有这样的方法。 111 00:06:26,710 --> 00:06:30,900 然后,有趣的是在这里 那不是有括号,我们 112 00:06:30,900 --> 00:06:32,900 有这些冒号。 113 00:06:32,900 --> 00:06:38,450 然后,在我们的论点面前,我们 放,再次,在括号中的类型 114 00:06:38,450 --> 00:06:39,370 我们的论点。 115 00:06:39,370 --> 00:06:43,160 >> 所以,现在我试图使 之间,你知道,正和比较 116 00:06:43,160 --> 00:06:45,450 数,因为他们 都喜欢整​​数。 117 00:06:45,450 --> 00:06:49,580 然后,另一 是NSUInteger类型。 118 00:06:49,580 --> 00:06:56,390 然后,用Objective-C中,当你 希望有多个参数的 119 00:06:56,390 --> 00:07:00,030 你的方法子句,你,就, 他们分开了一种这样的 - 120 00:07:00,030 --> 00:07:03,790 我不太知道如何来形容它, 但你这是怎么的一个很好的例子 121 00:07:03,790 --> 00:07:06,530 可以有多个参数在里面。 122 00:07:06,530 --> 00:07:10,360 >> 你可以,当然,只是完全 忽略andArray结肠的NSArray 123 00:07:10,360 --> 00:07:13,240 如果数组你想只是一个方法 它接受一个参数。 124 00:07:13,240 --> 00:07:13,677 是的,问题。 125 00:07:13,677 --> 00:07:18,701 >> 观众:是既NSUInteger和 可以采取在NSArray的参数 126 00:07:18,701 --> 00:07:21,530 内的NSArray? 127 00:07:21,530 --> 00:07:22,060 >> RHED石:是的。 128 00:07:22,060 --> 00:07:23,400 所以,让我来解释一下。 129 00:07:23,400 --> 00:07:23,790 所以,是的。 130 00:07:23,790 --> 00:07:30,260 因此,问题是有NSUInteger和 NSArray的*类型的参数, 131 00:07:30,260 --> 00:07:31,570 这就是正确的。 132 00:07:31,570 --> 00:07:35,700 所以,你总是要指定什么 您的参数的类型是。 133 00:07:35,700 --> 00:07:41,570 在这里,我想向你介绍 在一定的语法和词汇的 134 00:07:41,570 --> 00:07:45,910 Objective-C语言,所以这些都是实际类型 你会被处理。 135 00:07:45,910 --> 00:07:48,970 >> 正如你会发现,阵列 是那种不再,, 136 00:07:48,970 --> 00:07:50,780 简易支架的东西。 137 00:07:50,780 --> 00:07:52,060 他们的对象。 138 00:07:52,060 --> 00:07:56,700 尽管如此,如果我们去到下一个 滑盖,我们可以看到,我们可以 139 00:07:56,700 --> 00:08:02,510 硬编码一个NSArray在Objective-C与 前面只是一个符号时 140 00:08:02,510 --> 00:08:04,190 括号。 141 00:08:04,190 --> 00:08:08,650 我不是,实际上,肯定这是否 我句法硬编码的数组 142 00:08:08,650 --> 00:08:16,020 正确的C版本,但是这 应该是在C数组。 143 00:08:16,020 --> 00:08:19,760 >> 所以,这是你会怎样,你知道, 也许使用的功能或 144 00:08:19,760 --> 00:08:21,990 我们前面创建的方法。 145 00:08:21,990 --> 00:08:22,250 对不对? 146 00:08:22,250 --> 00:08:25,340 所以,这是我们宣布我们 功能和我们的方法。 147 00:08:25,340 --> 00:08:28,020 现在我们想使用它们的 我们的节目,这是 148 00:08:28,020 --> 00:08:29,450 我们如何做到这一点。 149 00:08:29,450 --> 00:08:32,400 因此,在C中,你会,你知道, 也许,一个bool b,我们将其设置为 150 00:08:32,400 --> 00:08:36,549 相等的功能,然后 您传入的参数。 151 00:08:36,549 --> 00:08:39,190 >> 在Objective-C,这是很 同样的事情。 152 00:08:39,190 --> 00:08:43,370 你的NSArray * my_array,并且它的 要平等 - 现在,唯一的 153 00:08:43,370 --> 00:08:47,460 这里的区别是这个对象的事情, 我已经用黄色突出显示,并 154 00:08:47,460 --> 00:08:51,180 你可以看到,在C,有 没有其他的黄字。 155 00:08:51,180 --> 00:08:54,170 而这是因为方法属于 具有一定的对象。 156 00:08:54,170 --> 00:08:59,800 所以这就是为什么我需要有一个对象 有点那个,,调用此方法的 157 00:08:59,800 --> 00:09:04,360 数字零,然后 在NSArray的A,B,C,D。 158 00:09:04,360 --> 00:09:05,350 上有问题吗? 159 00:09:05,350 --> 00:09:12,190 >> 我们将看看这些概念 不一会儿,当我们进入一个演示。 160 00:09:12,190 --> 00:09:13,400 确定。 161 00:09:13,400 --> 00:09:17,170 现在,我想谈一点简要 关于Xcode的5,这是 162 00:09:17,170 --> 00:09:21,160 集成开发环境 你会在使用。 163 00:09:21,160 --> 00:09:26,160 我知道很多你,或者你们中的一些, 没有苹果电脑,这是一个问题 164 00:09:26,160 --> 00:09:30,490 因为Xcode是不可用 适用于Windows和PC。 165 00:09:30,490 --> 00:09:32,785 不要问我为什么,但可能 - 166 00:09:32,785 --> 00:09:33,730 是的,企业。 167 00:09:33,730 --> 00:09:35,290 不管。 168 00:09:35,290 --> 00:09:39,360 但无论如何,所以,我道歉,如果一些 你必须下载某种 169 00:09:39,360 --> 00:09:43,000 适用于Mac的虚拟机 为了运行Xcode中5。 170 00:09:43,000 --> 00:09:46,460 但它是一个非常漂亮的 软件使用。 171 00:09:46,460 --> 00:09:51,280 >> 因此,在我们潜入任何形式 演示的,我只是想告诉你一个 172 00:09:51,280 --> 00:09:55,700 什么样的Xcode看起来像在你的图片 窗口,然后还谈什么 173 00:09:55,700 --> 00:09:57,670 这整个空间是什么。 174 00:09:57,670 --> 00:10:01,600 因此,它有点像学习如何 使用Microsoft Word,除非你想 175 00:10:01,600 --> 00:10:04,675 熟习所有 不同的东西, 176 00:10:04,675 --> 00:10:06,250 是怎么回事。 177 00:10:06,250 --> 00:10:11,160 >> 因此,首先,我要指出你 到工具栏上方。 178 00:10:11,160 --> 00:10:14,450 你会看到,在顶部, 你必须将文件名 - 179 00:10:14,450 --> 00:10:18,100 或者,其实,你的项目名称 然后你的文件名。 180 00:10:18,100 --> 00:10:20,940 注意的发挥, 停止按钮。 181 00:10:20,940 --> 00:10:24,210 这些是那些你会出现 使用上的运行您的应用程序 182 00:10:24,210 --> 00:10:25,600 模拟器 - 183 00:10:25,600 --> 00:10:26,550 在iOS模拟器。 184 00:10:26,550 --> 00:10:29,940 这会自动自带的Xcode 5, 所以你不必担心 185 00:10:29,940 --> 00:10:32,070 下载某种模拟器。 186 00:10:32,070 --> 00:10:34,700 您只需按下播放和 然后运行你的应用程序。 187 00:10:34,700 --> 00:10:39,230 而且你可以玩弄你, 你会看到它是如何工作以后。 188 00:10:39,230 --> 00:10:42,690 >> 然后,在该中心,当然是 在那里所有的漂亮的代码是 189 00:10:42,690 --> 00:10:44,240 要去。 190 00:10:44,240 --> 00:10:48,340 然后,在左手侧,你会 那种有这个,,文件夹 - 191 00:10:48,340 --> 00:10:50,340 导航 - 192 00:10:50,340 --> 00:10:53,970 然后,您还可以看到,沿 与该文件夹图标,有一个 193 00:10:53,970 --> 00:10:57,680 一堆其他的图标那里, 以后会有用的。 194 00:10:57,680 --> 00:11:04,710 >> 然后,在右侧是一个实用 区,您可以用合作 195 00:11:04,710 --> 00:11:09,620 一些对象,并指定你 知道,什么样的颜色应该是什么 196 00:11:09,620 --> 00:11:12,040 文字字体应,等等。 197 00:11:12,040 --> 00:11:15,890 虽然,你做的一切 在公用事业领域,你可以 198 00:11:15,890 --> 00:11:17,480 做代码。 199 00:11:17,480 --> 00:11:21,630 所以,我会去通过两个 使用,简单地说,没有代码的例子 200 00:11:21,630 --> 00:11:23,730 所有 - 或非常少量的代码 - 201 00:11:23,730 --> 00:11:28,290 诗句的所有代码,只是让你们 知道你可以和不能做什么 202 00:11:28,290 --> 00:11:29,260 Xcode和Objective-C语言。 203 00:11:29,260 --> 00:11:32,770 >> 然后,最后,向下在底部, 你有调试区域。 204 00:11:32,770 --> 00:11:37,270 所以,你不必再运行GDB, 等等,在您的程序。 205 00:11:37,270 --> 00:11:39,180 它会自动为您完成。 206 00:11:39,180 --> 00:11:42,880 而且你还可以打印 东西到这个区域。 207 00:11:42,880 --> 00:11:46,790 因此,实际上,后来,我们将通过 mario.c,如果你们还记得 208 00:11:46,790 --> 00:11:49,000 即,在Xcode。 209 00:11:49,000 --> 00:11:50,360 所以这应该是乐趣无穷。 210 00:11:50,360 --> 00:11:55,870 >> 然后,只需把它带回 Objective-C语言,我想突出什么 211 00:11:55,870 --> 00:11:57,440 你可以用if语句做。 212 00:11:57,440 --> 00:12:03,160 所以,你知道,因为Objective-C语言是一种 的C超集,你所做的一切就是, 213 00:12:03,160 --> 00:12:06,890 从字面上看,相同C.你只是 有轻微的差异。 214 00:12:06,890 --> 00:12:10,810 所以,你会因为如果一个通知的形式 声明仍然是相同的 - 你有 215 00:12:10,810 --> 00:12:14,280 如果,然后你必须用括号 的内部的状态下,它再 216 00:12:14,280 --> 00:12:17,150 大括号不管你 想要做的有内部。 217 00:12:17,150 --> 00:12:21,680 >> 不过,我希望把这个幻灯片起来 这里,只是为了说明的是, 218 00:12:21,680 --> 00:12:25,680 因为我们处理的对象现在, 我们将不得不使用这些东西 219 00:12:25,680 --> 00:12:31,240 所谓的喜欢,等于字符串, 的是,巧合的是,一个方法 220 00:12:31,240 --> 00:12:33,710 字符串或一个NSString对象。 221 00:12:33,710 --> 00:12:38,600 所以,总之,在这种情况下,是一个NSString 对象,并且它有一个称为是法 222 00:12:38,600 --> 00:12:44,150 等于字符串,然后我们传递 在一个硬编码字符串,看看 223 00:12:44,150 --> 00:12:48,110 无论这些都是平等的 到彼此。 224 00:12:48,110 --> 00:12:51,580 >> 有任何疑问,这么远吗? 225 00:12:51,580 --> 00:12:52,440 确定。 226 00:12:52,440 --> 00:12:56,190 而且,我想去过 for语句也。 227 00:12:56,190 --> 00:13:01,420 >> 因此,举例来说,如果我们想回圈 在一个串中的C的长度,这 228 00:13:01,420 --> 00:13:03,710 应该是熟悉的。 229 00:13:03,710 --> 00:13:07,840 而且,在Objective-C,我想 突出排序这个,, 230 00:13:07,840 --> 00:13:09,235 方法中调用计数。 231 00:13:09,235 --> 00:13:13,260 232 00:13:13,260 --> 00:13:15,550 嗯,其实,让我 刚收回那句话。 233 00:13:15,550 --> 00:13:17,200 计数是阵列的方法。 234 00:13:17,200 --> 00:13:21,070 然而,它更具体地 数组,这就是为什么你的财产 235 00:13:21,070 --> 00:13:22,380 可以使用点符号。 236 00:13:22,380 --> 00:13:25,870 但我并不想进入太多 这种概念上的东西,我只是想 237 00:13:25,870 --> 00:13:30,140 向您展示如何将事情看 像在Objective-C与C。 238 00:13:30,140 --> 00:13:35,400 >> 而且,我也想指出的是, 尽管我一直在使用NSUInteger 239 00:13:35,400 --> 00:13:39,860 在我所有的我的在Objective-C的前面, 您还可以使用int,因为int是 240 00:13:39,860 --> 00:13:42,290 在Objective-C完全有效的,也。 241 00:13:42,290 --> 00:13:42,475 是吗? 242 00:13:42,475 --> 00:13:44,350 >> 观众:难道仅仅是 文体,或者是 - 243 00:13:44,350 --> 00:13:44,760 >> RHED师:是啊。 244 00:13:44,760 --> 00:13:46,060 所以,你会看到 - 245 00:13:46,060 --> 00:13:49,390 所以,问题是在于, 只是一个风格问题。 246 00:13:49,390 --> 00:13:54,820 正如你所看到的,我有样的,,星 星号的东西倒在底部,并 247 00:13:54,820 --> 00:13:59,870 该链接将带您到一个堆栈溢出 形成,如果有人解释 248 00:13:59,870 --> 00:14:03,640 在一个int的区别 NSInteger的和NSUInteger。 249 00:14:03,640 --> 00:14:05,540 所以,你可以约稍后阅读。 250 00:14:05,540 --> 00:14:07,640 这些幻灯片将,当然, 提供给您。 251 00:14:07,640 --> 00:14:10,300 252 00:14:10,300 --> 00:14:11,280 >> 让我们来看看。 253 00:14:11,280 --> 00:14:12,150 好了,真棒。 254 00:14:12,150 --> 00:14:15,410 所以,这也包括在滑动 因为我认为这是一个伟大的 255 00:14:15,410 --> 00:14:19,370 网站,为您介绍 Objective-C的语法。 256 00:14:19,370 --> 00:14:24,410 因此,实际上,我们为什么不搬到 Chrome浏览器,并检查了这个网站? 257 00:14:24,410 --> 00:14:30,650 258 00:14:30,650 --> 00:14:31,300 >> 右。 259 00:14:31,300 --> 00:14:36,670 所以,我想告诉你 你们这里是这样的形象。 260 00:14:36,670 --> 00:14:41,630 所以,这是,排序的,将是什么 你会看到里面的任何 261 00:14:41,630 --> 00:14:42,890 Xcode的文件。 262 00:14:42,890 --> 00:14:47,400 263 00:14:47,400 --> 00:14:51,430 其实,我们为什么不只是拿一个 瞬间,那种,借此英寸 264 00:14:51,430 --> 00:14:53,470 >> 所以,这本书 - 265 00:14:53,470 --> 00:14:55,880 这就是对象 我们正在处理。 266 00:14:55,880 --> 00:14:59,680 然后,它显然将是 从其他对象继承的,但 267 00:14:59,680 --> 00:15:01,810 你不必担心。 268 00:15:01,810 --> 00:15:04,430 然后,它也许具有 一些成员变量。 269 00:15:04,430 --> 00:15:09,160 >> 我想告诉你最重要的事情 是实例方法,在这里。 270 00:15:09,160 --> 00:15:12,670 因此,实例方法来表示 这个减号。 271 00:15:12,670 --> 00:15:15,550 然后,你会发现,我们 已经开始看到范式 272 00:15:15,550 --> 00:15:17,670 为方法声明,对不对? 273 00:15:17,670 --> 00:15:22,670 返回类型,方法名,和 的说法,那么类型,并 274 00:15:22,670 --> 00:15:24,660 然后是参数的名称。 275 00:15:24,660 --> 00:15:29,090 而这个减号意味着它是一个 实例方法,这意味着 276 00:15:29,090 --> 00:15:32,270 这些方法仅适用于 已经实例化的对象。 277 00:15:32,270 --> 00:15:35,050 278 00:15:35,050 --> 00:15:39,100 >> 对比的是,方法用加 签署在他们面前的是类 279 00:15:39,100 --> 00:15:43,640 方法,这意味着你可以调用 这些方法,即使你没有 280 00:15:43,640 --> 00:15:45,970 一个对象创建的呢。 281 00:15:45,970 --> 00:15:51,600 所以,一个明显的例子, NSString的是一类。 282 00:15:51,600 --> 00:15:55,850 并且可以调用,例如, 关于NSString类方法 - 283 00:15:55,850 --> 00:15:58,660 实际的一样,字的NSString。 284 00:15:58,660 --> 00:16:02,050 >> 然而,为了使用这些 方法,你居然 285 00:16:02,050 --> 00:16:03,460 需要创建一个字符串。 286 00:16:03,460 --> 00:16:08,980 例如,NSString的明星字符串等于 在引号,你好世界。 287 00:16:08,980 --> 00:16:10,910 然后,你可以使用这些方法 - 288 00:16:10,910 --> 00:16:11,990 实例方法 - 289 00:16:11,990 --> 00:16:14,790 上的hello world字符串。 290 00:16:14,790 --> 00:16:17,825 所以,这之间的差 实例方法和类方法。 291 00:16:17,825 --> 00:16:20,390 292 00:16:20,390 --> 00:16:21,930 >> 而且,我们只是覆盖这部分。 293 00:16:21,930 --> 00:16:25,300 294 00:16:25,300 --> 00:16:33,750 属性是另一件事是 里面的对象,基本上是这样。 295 00:16:33,750 --> 00:16:37,530 而你与他们声明 该物业在关键字。 296 00:16:37,530 --> 00:16:39,940 您有这些选项,在这里, 我稍后会解释时, 297 00:16:39,940 --> 00:16:43,110 我们进入一个演示。 298 00:16:43,110 --> 00:16:43,660 是吗? 299 00:16:43,660 --> 00:16:43,950 你好。 300 00:16:43,950 --> 00:16:45,440 >> 观众:你能不能放大,好吗? 301 00:16:45,440 --> 00:16:46,130 >> RHED师:哦,是的。 302 00:16:46,130 --> 00:16:46,560 抱歉。 303 00:16:46,560 --> 00:16:49,140 >> 观众:谢谢。 304 00:16:49,140 --> 00:16:50,005 >> RHED师:那应该是好了很多。 305 00:16:50,005 --> 00:16:51,240 >> 观众:是啊。 306 00:16:51,240 --> 00:16:53,940 谢谢。 307 00:16:53,940 --> 00:16:56,815 >> RHED师:是啊,请提醒我,如果 我忘了放大或缩小。 308 00:16:56,815 --> 00:17:00,590 309 00:17:00,590 --> 00:17:03,570 所以,这就是我想要的 向你介绍 - 310 00:17:03,570 --> 00:17:05,970 哇,这是一个很大 - 311 00:17:05,970 --> 00:17:06,790 本网站。 312 00:17:06,790 --> 00:17:12,210 所以,让我们回到我们的幻灯片。 313 00:17:12,210 --> 00:17:17,819 >> 其实,现在让我们花一点时间 潜入的演示。 314 00:17:17,819 --> 00:17:25,490 因此,我们将开始与 新的Xcode项目。 315 00:17:25,490 --> 00:17:33,040 所以,如果你打开​​Xcode中所有的 你的机器,它应该把你的一些 316 00:17:33,040 --> 00:17:36,720 页如果说,像,无论是开 一个现有项目或新 317 00:17:36,720 --> 00:17:39,230 项目,你应该 单击一个新的项目。 318 00:17:39,230 --> 00:17:41,477 然后,应该采取 你到这个画面。 319 00:17:41,477 --> 00:17:41,593 是吗? 320 00:17:41,593 --> 00:17:44,279 >> 观众:如果我们没有在Mac, 那种我们只是寒心? 321 00:17:44,279 --> 00:17:46,870 >> RHED石:还是看的 有一个人,是的。 322 00:17:46,870 --> 00:17:47,740 是啊。 323 00:17:47,740 --> 00:17:50,660 你可以冷静下来了。 324 00:17:50,660 --> 00:17:51,570 确定。 325 00:17:51,570 --> 00:17:55,410 >> 所以,我们要首先做到,现在怎么办, 是,其实,我们要做的一个 326 00:17:55,410 --> 00:17:56,600 单一视图的应用程序。 327 00:17:56,600 --> 00:18:01,340 所以,如果你会发现,什么是伟大的 关于Xcode和苹果支持 328 00:18:01,340 --> 00:18:05,690 开发商是,你有很多的 模板与已工作。 329 00:18:05,690 --> 00:18:09,210 你可以,例如,使 主从复合应用程序。 330 00:18:09,210 --> 00:18:10,920 你可以做一个游戏 - 331 00:18:10,920 --> 00:18:13,860 实际上,我不会进入游戏, 因为游戏是一个不同的故事 332 00:18:13,860 --> 00:18:15,320 为iOS开发。 333 00:18:15,320 --> 00:18:18,930 而且他们那种分开, 所以我不会去考虑这样做。 334 00:18:18,930 --> 00:18:22,580 >> 然后,你已经基于页面 应用程序。 335 00:18:22,580 --> 00:18:24,010 你有一个标签的应用 - 336 00:18:24,010 --> 00:18:29,350 所以喜欢,例如,美国银行 可能有,像,一个标签式的应用程序。 337 00:18:29,350 --> 00:18:32,140 这是那些,你有 这些按钮在底部。 338 00:18:32,140 --> 00:18:34,750 然后,你有雪碧套装游戏。 339 00:18:34,750 --> 00:18:38,670 >> 或者你可以从头开始工作,这 就是我们稍后会做的。 340 00:18:38,670 --> 00:18:42,470 但是,让我们,首先,开始 一个单一视图的应用程序。 341 00:18:42,470 --> 00:18:48,590 然后,它会要求一个产品名称, 我们可以做测试。 342 00:18:48,590 --> 00:18:50,190 组织名称 - 343 00:18:50,190 --> 00:18:54,140 因此,组织名称, 公司标识 - 344 00:18:54,140 --> 00:18:58,100 这些都是重要的,如果你打算 把你的应用程序在App Store。 345 00:18:58,100 --> 00:19:01,110 346 00:19:01,110 --> 00:19:05,116 除此之外,你的代码将 运行精绝没有这个。 347 00:19:05,116 --> 00:19:09,940 >> 这将是重要的,如果你 想要的 - 所以,本身一样,把你的应用程序 348 00:19:09,940 --> 00:19:14,080 到您的手机什么的,和测试 出来,你知道,在现实生活中 - 349 00:19:14,080 --> 00:19:15,360 这将是很重要的。 350 00:19:15,360 --> 00:19:20,110 这趋向于通常与相关联的 一些开发者账户的 351 00:19:20,110 --> 00:19:20,970 与苹果。 352 00:19:20,970 --> 00:19:24,740 >> 所以,我知道,也许很多你 不会有任何开发人员帐户。 353 00:19:24,740 --> 00:19:26,460 我知道大学有一个。 354 00:19:26,460 --> 00:19:27,630 我觉得CS有一个。 355 00:19:27,630 --> 00:19:32,770 但是,你可以发邮件给我,我会尽力 去弄清楚你。 356 00:19:32,770 --> 00:19:38,210 但现在,我只是把 一些占位符的东西在这里。 357 00:19:38,210 --> 00:19:41,250 >> 而且你可以,当然,在这里,选择 你是否希望它是纯粹 358 00:19:41,250 --> 00:19:44,410 iPhone,iPad的中,或两者兼而有之 - 359 00:19:44,410 --> 00:19:46,630 普遍应用。 360 00:19:46,630 --> 00:19:56,170 所以,现在,让我们做通用的,只是 看该平台的两侧。 361 00:19:56,170 --> 00:19:57,120 >> 让我们来看看。 362 00:19:57,120 --> 00:20:01,510 所以,现在,我要救 它在某种文件夹。 363 00:20:01,510 --> 00:20:04,500 哪里并不重要 - 你 以后可以随时移动。 364 00:20:04,500 --> 00:20:09,380 而且,现在,我们被带到 我们的Xcode项目。 365 00:20:09,380 --> 00:20:12,890 我不会担心这一切。 366 00:20:12,890 --> 00:20:17,510 我建议不碰任何 这一点,除非你确切地知道 367 00:20:17,510 --> 00:20:18,260 你正在做的。 368 00:20:18,260 --> 00:20:21,750 所以,这一切,只是忽略 在大多数情况下。 369 00:20:21,750 --> 00:20:26,940 你不需要去触摸它,如果你 你搞砸了一些东西在这里,它 370 00:20:26,940 --> 00:20:28,600 变得有点棘手。 371 00:20:28,600 --> 00:20:32,480 >> 那么,我们为什么不研究 在文件 372 00:20:32,480 --> 00:20:34,700 左手侧在我们的导航仪。 373 00:20:34,700 --> 00:20:37,060 在这里,我们有AppDelegate.h。 374 00:20:37,060 --> 00:20:43,430 我们有AppDelegate.m所以,你会 通知,我们的头文件,其中 375 00:20:43,430 --> 00:20:45,720 结束点H,和我们有 实施 - 376 00:20:45,720 --> 00:20:46,970 其实,让我放大。 377 00:20:46,970 --> 00:20:56,270 378 00:20:56,270 --> 00:20:57,060 确定。 379 00:20:57,060 --> 00:20:59,940 让我放大。 380 00:20:59,940 --> 00:21:05,810 >> 对,所以你有头文件和 你有实现文件。 381 00:21:05,810 --> 00:21:07,060 其实 - 382 00:21:07,060 --> 00:21:08,680 383 00:21:08,680 --> 00:21:09,240 确定。 384 00:21:09,240 --> 00:21:11,800 这是一个有点怪异, 但忍耐一下。 385 00:21:11,800 --> 00:21:16,140 然后,因为我们选择的单一视图 应用程序中,我们将要 386 00:21:16,140 --> 00:21:17,340 正在与故事情节。 387 00:21:17,340 --> 00:21:22,140 >> 所以,故事情节是什么,苹果 已经拿出来真正帮助 388 00:21:22,140 --> 00:21:26,550 开发人员快速原型 他们的应用程序。 389 00:21:26,550 --> 00:21:29,410 所以,这是您可以在其中创建 而不需要编写一个应用程序 390 00:21:29,410 --> 00:21:31,710 一行代码。 391 00:21:31,710 --> 00:21:35,390 然而,在我们的单一视图的应用程序, 我们做什么,当然,有一个 392 00:21:35,390 --> 00:21:41,270 文件为我们的观点,这 是一个视图控制器。 393 00:21:41,270 --> 00:21:45,150 因此,我们有报头和 实现文件,在这里。 394 00:21:45,150 --> 00:21:52,350 >> 而且,我现在要缩小,因为 我们需要在脚本的工作。 395 00:21:52,350 --> 00:21:55,190 所以,这是我们的看法。 396 00:21:55,190 --> 00:22:00,120 如果我们简单地说,运行应用程序现在, 有没有什么令人激动的事情。 397 00:22:00,120 --> 00:22:03,270 398 00:22:03,270 --> 00:22:05,040 所以,你会看到这个白色的屏幕。 399 00:22:05,040 --> 00:22:06,110 好不好? 400 00:22:06,110 --> 00:22:14,010 >> 而且,在我们的公用事业领域,我们可以添加 一堆不同的东西出来。 401 00:22:14,010 --> 00:22:19,290 所以,当你处理屏幕 在iOS中,视图控制器是 402 00:22:19,290 --> 00:22:23,150 封装的对象, 排序的,您的意见。 403 00:22:23,150 --> 00:22:26,980 因此,一个视图控制器总是 已经称为属性视图。 404 00:22:26,980 --> 00:22:29,610 而这一观点,通常情况下,包含, 你知道,你什么 405 00:22:29,610 --> 00:22:30,810 想在屏幕上看到的。 406 00:22:30,810 --> 00:22:39,210 >> 那么,好吧,就让我们通过将启动, 也许是,也许一个标签。 407 00:22:39,210 --> 00:22:41,450 所以,让我们把标签放在那里 - 408 00:22:41,450 --> 00:22:44,080 把它贴在中间。 409 00:22:44,080 --> 00:22:49,560 所以,现在我已经点击标签,我 可以进入属性检查器 410 00:22:49,560 --> 00:22:51,510 并开始改变它的值。 411 00:22:51,510 --> 00:22:55,040 让我们把它叫做CS50颜色。 412 00:22:55,040 --> 00:22:58,220 >> 而且,我还可以改变字体。 413 00:22:58,220 --> 00:23:02,630 而不是做系统,因此,它是 在默认情况下,我们可以做一个自定义的。 414 00:23:02,630 --> 00:23:03,770 我们可以改变 - 415 00:23:03,770 --> 00:23:06,453 你知道,超轻,使其32。 416 00:23:06,453 --> 00:23:09,000 417 00:23:09,000 --> 00:23:11,370 然后,我们可以让我们的信箱更大。 418 00:23:11,370 --> 00:23:14,410 >> 观众:你认为你可以放大 在短短一个多一点,也许? 419 00:23:14,410 --> 00:23:14,810 >> RHED师:是吗? 420 00:23:14,810 --> 00:23:16,196 确定。 421 00:23:16,196 --> 00:23:17,450 >> 观众:只需轻点吗? 422 00:23:17,450 --> 00:23:19,020 >> RHED师:让我们来看看。 423 00:23:19,020 --> 00:23:20,382 工作的呢? 424 00:23:20,382 --> 00:23:22,270 >> 观众:刚才通过的Xcode? 425 00:23:22,270 --> 00:23:23,520 >> RHED施:当然。 426 00:23:23,520 --> 00:23:25,620 427 00:23:25,620 --> 00:23:25,940 确定。 428 00:23:25,940 --> 00:23:26,275 真棒。 429 00:23:26,275 --> 00:23:27,072 >> 观众:根据标签? 430 00:23:27,072 --> 00:23:28,920 标签? 431 00:23:28,920 --> 00:23:29,480 >> RHED石:那是什么? 432 00:23:29,480 --> 00:23:32,050 >> 观众:什么下拉 是该标签下? 433 00:23:32,050 --> 00:23:35,170 >> RHED师:那么,问题是什么 下拉是标签下? 434 00:23:35,170 --> 00:23:37,260 它应该简单地说,是在这里。 435 00:23:37,260 --> 00:23:39,330 我想这是一个立方体的事情。 436 00:23:39,330 --> 00:23:40,910 但通常,这是默认 - 437 00:23:40,910 --> 00:23:43,250 我只是到这里 直到我发现有一个标签。 438 00:23:43,250 --> 00:23:45,800 439 00:23:45,800 --> 00:23:47,730 是啊。 440 00:23:47,730 --> 00:23:48,950 >> 所以,现在,我们有我们的标签。 441 00:23:48,950 --> 00:23:51,040 让我们来居中。 442 00:23:51,040 --> 00:23:56,410 和Xcode给我们指引 定心对象。 443 00:23:56,410 --> 00:23:59,510 444 00:23:59,510 --> 00:24:01,480 所以,现在让我们再次运行我们的代码。 445 00:24:01,480 --> 00:24:08,110 446 00:24:08,110 --> 00:24:08,800 >> 我们走吧。 447 00:24:08,800 --> 00:24:10,310 因此,我们有CS50颜色。 448 00:24:10,310 --> 00:24:13,720 449 00:24:13,720 --> 00:24:15,420 现在,让我们把一个按钮 在那里,对不对? 450 00:24:15,420 --> 00:24:17,480 因为我们想使 这个互动。 451 00:24:17,480 --> 00:24:19,410 所以,让我们把一个按钮在这里。 452 00:24:19,410 --> 00:24:39,020 我们将在这里叫这个按钮“点击 继续“,我们将围绕它,也 453 00:24:39,020 --> 00:24:39,990 事实上,它已经居中。 454 00:24:39,990 --> 00:24:40,630 是啊。 455 00:24:40,630 --> 00:24:43,130 >> 所以,现在我们有一个按钮。 456 00:24:43,130 --> 00:24:53,000 如果我们运行这个再次,我们要 这里有一个很好的小按钮。 457 00:24:53,000 --> 00:24:56,520 我可以点击它,但它不会做 任何事情,因为我们没有做 458 00:24:56,520 --> 00:24:58,500 用按钮做任何事。 459 00:24:58,500 --> 00:25:01,740 >> 那么,让我们来创建另一个视图,对不对? 460 00:25:01,740 --> 00:25:04,160 因此,让我们说我想挖掘 那个按钮,我想 461 00:25:04,160 --> 00:25:05,730 去到另一个页面 - 462 00:25:05,730 --> 00:25:06,820 另一种看法。 463 00:25:06,820 --> 00:25:14,440 我什么都做的是,我可以创造 一个视图控制器,对不对? 464 00:25:14,440 --> 00:25:19,690 现在,我会点击我的按钮,然后, 重要的是,我要 465 00:25:19,690 --> 00:25:20,910 点击 - 或 - 466 00:25:20,910 --> 00:25:23,660 是的,我按键盘上的控制。 467 00:25:23,660 --> 00:25:24,880 控制。 468 00:25:24,880 --> 00:25:27,005 按一下按钮,然后拖动。 469 00:25:27,005 --> 00:25:29,960 470 00:25:29,960 --> 00:25:33,550 >> 所以,记得按住控制键。 471 00:25:33,550 --> 00:25:35,160 让我们做一遍。 472 00:25:35,160 --> 00:25:40,930 所以,保持控制,单击并拖动 你想要做什么。 473 00:25:40,930 --> 00:25:41,520 确定。 474 00:25:41,520 --> 00:25:43,610 >> 而现在,我有几个选择这里。 475 00:25:43,610 --> 00:25:47,900 我既可以推,或者我可以做一个 模态的,或者我可以做一个自定义的。 476 00:25:47,900 --> 00:25:50,900 推的是只有当你有一个 导航控制器。 477 00:25:50,900 --> 00:25:54,270 眼下,我们的第一个观点 控制器不是任何内部 478 00:25:54,270 --> 00:25:55,610 导航控制器。 479 00:25:55,610 --> 00:25:59,500 因此,导航控制器是一个 ,让你的后退按钮 480 00:25:59,500 --> 00:26:03,910 iOS的应用程序,你有,你知道, 最重要的是,有点厚吧 - 481 00:26:03,910 --> 00:26:06,480 在那里你可以回去,或 向前,等等。 482 00:26:06,480 --> 00:26:07,740 现在,我没有那个。 483 00:26:07,740 --> 00:26:11,050 所以,这就是为什么我不能做一个推。 484 00:26:11,050 --> 00:26:12,480 >> 所以,我点击了推 小心,这里。 485 00:26:12,480 --> 00:26:16,480 而实际上,我们来运行代码, 它应该崩溃在我身上。 486 00:26:16,480 --> 00:26:19,770 487 00:26:19,770 --> 00:26:22,960 只有当我按下按钮 虽然,所以 - 488 00:26:22,960 --> 00:26:23,420 右。 489 00:26:23,420 --> 00:26:26,480 所以,这是不好的。 490 00:26:26,480 --> 00:26:31,330 >> 而且,正如你所看到的,在这里,我们 有错误消息。 491 00:26:31,330 --> 00:26:35,460 因此,“推塞格斯只能用于当 源控制器由一个管理 492 00:26:35,460 --> 00:26:40,700 比如用户界面的导航控制器。“ 这样,因为这不是一个内部 493 00:26:40,700 --> 00:26:44,030 导航控制器, 我不能这样做。 494 00:26:44,030 --> 00:26:48,782 >> 所以,现在,我要回 文件夹,回到故事情节。 495 00:26:48,782 --> 00:26:51,680 >> 观众:什么是导航 控制器,再? 496 00:26:51,680 --> 00:26:55,260 >> RHED师:那么,现在我会告诉你。 497 00:26:55,260 --> 00:26:56,200 让我们来看看。 498 00:26:56,200 --> 00:27:00,510 所以,我要点击这个观点 控制器,然后我会去 499 00:27:00,510 --> 00:27:03,920 最多的产品 - 500 00:27:03,920 --> 00:27:06,240 其实,不,对不起 - 编辑。 501 00:27:06,240 --> 00:27:08,360 我要去进入 - 502 00:27:08,360 --> 00:27:09,350 其实,我有没有点击它? 503 00:27:09,350 --> 00:27:10,070 号 504 00:27:10,070 --> 00:27:11,080 我们走吧。 505 00:27:11,080 --> 00:27:16,270 我要涨成编辑器,下井 嵌入到,然后导航 506 00:27:16,270 --> 00:27:17,520 控制器。 507 00:27:17,520 --> 00:27:20,130 508 00:27:20,130 --> 00:27:20,720 >> 确定。 509 00:27:20,720 --> 00:27:27,750 而且,我的工作区看起来非常凌乱, 让我们清理它。 510 00:27:27,750 --> 00:27:29,000 所以,这一切都是故事情节。 511 00:27:29,000 --> 00:27:32,510 512 00:27:32,510 --> 00:27:33,760 并以这种方式 - 513 00:27:33,760 --> 00:27:37,030 514 00:27:37,030 --> 00:27:38,280 OK,停止 - 515 00:27:38,280 --> 00:27:49,320 516 00:27:49,320 --> 00:27:50,860 我可以快速构建的东西 像这样。 517 00:27:50,860 --> 00:27:53,020 然后,我现在可以回去了,你知道吗? 518 00:27:53,020 --> 00:27:55,730 >> 但是,这是种无聊的,对不对? 519 00:27:55,730 --> 00:28:03,020 所以,我想要做的是,我不想 做,只是简单地说,一个视图 520 00:28:03,020 --> 00:28:03,870 控制器。 521 00:28:03,870 --> 00:28:07,720 比方说,我想真正做一个 表视图控制器,这样我就可以把 522 00:28:07,720 --> 00:28:12,110 一些漂亮的颜色,到表中。 523 00:28:12,110 --> 00:28:16,210 >> 所以,现在我已经把我的表视图 控制器,我需要把它连接回 524 00:28:16,210 --> 00:28:18,560 从这个按钮将 视图控制器。 525 00:28:18,560 --> 00:28:21,780 所以,我需要做我的控制, 点击,拖动的事情了。 526 00:28:21,780 --> 00:28:27,318 现在我能做的推送,因为我嵌入 它导航控制器的内部。 527 00:28:27,318 --> 00:28:32,210 >> 观众:导航控制器刚 允许你从一个地方去的地方? 528 00:28:32,210 --> 00:28:33,540 >> RHED石:是的。 529 00:28:33,540 --> 00:28:38,670 所以,更在技术上,它是 一个对象,其中 - 530 00:28:38,670 --> 00:28:43,150 所以,里面的导航 控制器对象,它 531 00:28:43,150 --> 00:28:44,780 跟踪数组。 532 00:28:44,780 --> 00:28:48,300 而且数组保存所有后续 查看控制器。 533 00:28:48,300 --> 00:28:51,560 这就是为什么当你按下回来, 返回到前一个页面。 534 00:28:51,560 --> 00:28:55,260 因为导航控制器 对象,或者说需要照顾的代码 535 00:28:55,260 --> 00:28:58,890 这个对象,具有保持一个数组 追踪这些视图控制器,并 536 00:28:58,890 --> 00:29:01,870 然后,你知道,DQ视图 控制器和给你回 537 00:29:01,870 --> 00:29:02,750 前一个。 538 00:29:02,750 --> 00:29:05,200 >> 所以,这是技术性的东西,但是 - 539 00:29:05,200 --> 00:29:07,505 我会在以后告诉你 代码中,如果我们有时间。 540 00:29:07,505 --> 00:29:10,270 我种的时间不多了,但 - 541 00:29:10,270 --> 00:29:15,610 >> 因此,与表视图, 我们可以做的是 - 542 00:29:15,610 --> 00:29:18,440 它通常是自动设置 动态原型 - 543 00:29:18,440 --> 00:29:20,640 我们要让它静态细胞, 否则我们将 544 00:29:20,640 --> 00:29:22,920 碰到一些问题。 545 00:29:22,920 --> 00:29:28,470 >> 然后,让我们说我要去 有一个部分。 546 00:29:28,470 --> 00:29:31,000 因此,部分就像是 - 547 00:29:31,000 --> 00:29:35,160 如果你见过的音乐应用程序,当 你有艺术家,节会 548 00:29:35,160 --> 00:29:37,830 是A的通过Z's - 549 00:29:37,830 --> 00:29:38,780 字母 - 550 00:29:38,780 --> 00:29:42,600 然后,你知道,个人 行会是艺术家的名字。 551 00:29:42,600 --> 00:29:47,460 所以,什么是酷在这里,是我可以 访问所有内部对象 552 00:29:47,460 --> 00:29:50,430 通过这个我的故事板 下拉菜单了。 553 00:29:50,430 --> 00:29:56,600 >> 所以,我要点击我的部分, 我想,你知道,也许五排。 554 00:29:56,600 --> 00:30:00,770 然后,每行内, 我想提出一个标签。 555 00:30:00,770 --> 00:30:04,080 556 00:30:04,080 --> 00:30:06,340 我要去调用这个蓝色。 557 00:30:06,340 --> 00:30:09,530 558 00:30:09,530 --> 00:30:15,630 然后,我想提出一个UI视图,你 知道了,也许是因为,像一个小盒子。 559 00:30:15,630 --> 00:30:23,840 560 00:30:23,840 --> 00:30:28,710 >> 所以,我可以向人们展示 色的预览。 561 00:30:28,710 --> 00:30:34,150 我会回去的财产和 改变颜色,哦,我不 562 00:30:34,150 --> 00:30:35,510 知道,这一个。 563 00:30:35,510 --> 00:30:38,630 564 00:30:38,630 --> 00:30:43,150 >> 然后,通知还,在这里,当我有 配件,我可以有很多 565 00:30:43,150 --> 00:30:46,160 不同的配件 您通常看到的。 566 00:30:46,160 --> 00:30:55,250 披露指标,细节,或 查马克,或者干脆只是细节。 567 00:30:55,250 --> 00:30:59,080 所以,也许我们可以做的一样,披露 指示器,例如。 568 00:30:59,080 --> 00:31:03,540 >> 然后,我们为什么不把这些,副本 粘贴它们,并把它们放入 569 00:31:03,540 --> 00:31:06,740 接下来的表行。 570 00:31:06,740 --> 00:31:08,115 因此,我们可以把这种黄色。 571 00:31:08,115 --> 00:31:10,620 572 00:31:10,620 --> 00:31:12,155 我可能要延续这一点。 573 00:31:12,155 --> 00:31:15,730 574 00:31:15,730 --> 00:31:17,290 让我们把它发黄。 575 00:31:17,290 --> 00:31:20,610 并且以这种方式,我们可以复制 我们的方式粘贴下来。 576 00:31:20,610 --> 00:31:24,910 577 00:31:24,910 --> 00:31:25,370 那是什么? 578 00:31:25,370 --> 00:31:26,620 紫色。 579 00:31:26,620 --> 00:31:30,020 580 00:31:30,020 --> 00:31:34,740 >> 所以,这些都是典型的CS50 颜色,你见过在课堂 - 581 00:31:34,740 --> 00:31:37,160 实际上,对不起 - 582 00:31:37,160 --> 00:31:38,410 或者在网站上。 583 00:31:38,410 --> 00:31:49,700 584 00:31:49,700 --> 00:31:51,260 希望你们能看到 我在做什么在这里。 585 00:31:51,260 --> 00:31:57,270 586 00:31:57,270 --> 00:31:57,890 确定。 587 00:31:57,890 --> 00:31:58,490 最后一个。 588 00:31:58,490 --> 00:32:02,040 >> 观众:你是如何加入 该行最初? 589 00:32:02,040 --> 00:32:04,740 >> RHED师:那么,问题是,如何 我才添加的行开始? 590 00:32:04,740 --> 00:32:07,500 我走进这个表款 - 或者不过,我可以 591 00:32:07,500 --> 00:32:09,200 选择该表款 - 592 00:32:09,200 --> 00:32:11,250 然后,在这里,我更新 的行数。 593 00:32:11,250 --> 00:32:19,920 594 00:32:19,920 --> 00:32:22,505 >> 而且,让我希望这个工程。 595 00:32:22,505 --> 00:32:30,620 596 00:32:30,620 --> 00:32:31,480 确定。 597 00:32:31,480 --> 00:32:32,870 让我们来看看,如果这个工程。 598 00:32:32,870 --> 00:32:34,000 哦,完美的,真棒。 599 00:32:34,000 --> 00:32:35,300 确定。 600 00:32:35,300 --> 00:32:40,330 当我建立我的演示,一些 事情没对齐的,所以,感谢 601 00:32:40,330 --> 00:32:42,510 掌声。 602 00:32:42,510 --> 00:32:42,920 >> 是啊。 603 00:32:42,920 --> 00:32:44,770 那么,让我们来看看。 604 00:32:44,770 --> 00:32:47,550 我们将让这个9只是为了让 一切 - 或者实际上,我们只 605 00:32:47,550 --> 00:32:51,420 把所有这些为披露 指标。 606 00:32:51,420 --> 00:32:55,790 然后,我想告诉你,太, 是我怎么可以把每那些 607 00:32:55,790 --> 00:32:59,230 表行,并让它们进行交互 - 608 00:32:59,230 --> 00:33:00,150 哦。 609 00:33:00,150 --> 00:33:01,400 号 610 00:33:01,400 --> 00:33:05,700 611 00:33:05,700 --> 00:33:06,030 >> 呵呵。 612 00:33:06,030 --> 00:33:07,230 另外,我想告诉你 - 613 00:33:07,230 --> 00:33:13,080 在这里,我可以把标题我 导航控制器,对不对? 614 00:33:13,080 --> 00:33:17,090 所以实际上,你会发现,只要我 嵌入在这个视图控制器 615 00:33:17,090 --> 00:33:22,010 导航控制器,我们看到 在我们的这个顶部导航栏 616 00:33:22,010 --> 00:33:25,340 故事情节的代表性 的视图控制器。 617 00:33:25,340 --> 00:33:29,270 因此,这给了我们一样,视觉, 排序,引导我们的可视屏幕。 618 00:33:29,270 --> 00:33:34,360 这显然​​会 是导航栏。 619 00:33:34,360 --> 00:33:40,950 >> 而我想要做的很快, 现在,被放置在另 - 620 00:33:40,950 --> 00:33:45,880 所以这个表视图控制器我做了 取其中之一,并拖动它 621 00:33:45,880 --> 00:33:49,800 在这里,这是什么让我 很快,真的,创建一个表视图 622 00:33:49,800 --> 00:33:50,850 控制器。 623 00:33:50,850 --> 00:33:54,100 如果我们有足够的时间,虽然,你会 看到,编程,这是一个 624 00:33:54,100 --> 00:33:57,660 点点更棘手创建一个表 视图控制器,因为有 625 00:33:57,660 --> 00:34:02,520 有一对夫妇的一些方法 需要你,排序,写 626 00:34:02,520 --> 00:34:07,130 在为了使表视图 要正确显示控制器。 627 00:34:07,130 --> 00:34:15,340 >> 不过,我只是想告诉你,现在, 在那里,如果我拿这个的一个例子, 628 00:34:15,340 --> 00:34:15,920 例如 - 629 00:34:15,920 --> 00:34:18,290 我已经把在另一个视图控制器。 630 00:34:18,290 --> 00:34:27,320 现在,让我们说我想控制 按ALT我的第一个蓝色 631 00:34:27,320 --> 00:34:28,980 表行到这里。 632 00:34:28,980 --> 00:34:31,070 我想打电话给这个蓝色。 633 00:34:31,070 --> 00:34:32,570 然后 - 634 00:34:32,570 --> 00:34:34,159 让我们来看看。 635 00:34:34,159 --> 00:34:41,050 我的看法了,我可以改变 背景为蓝色。 636 00:34:41,050 --> 00:34:45,945 >> 因此,通知,在这里,这个下拉 菜单还为您提供了所有的层次结构 637 00:34:45,945 --> 00:34:47,040 这些对象。 638 00:34:47,040 --> 00:34:50,530 因此,一个重要的事情要注意,在这里, 是,所有的这些东西,在这里 - 639 00:34:50,530 --> 00:34:54,330 此表视图控制器,表 视图,表视图部分,表视图 640 00:34:54,330 --> 00:34:57,169 细胞 - 所有这些都是 对象,在代码中。 641 00:34:57,169 --> 00:35:03,752 所以,你知道,一个标签,现在是下 内容视图,等等。 642 00:35:03,752 --> 00:35:05,020 等等等等。 643 00:35:05,020 --> 00:35:08,765 >> 所以,如果我们运行这段代码,我们 应该看到的东西 - 644 00:35:08,765 --> 00:35:15,816 645 00:35:15,816 --> 00:35:17,870 如果让这来看看 - 是啊。 646 00:35:17,870 --> 00:35:18,670 那么,我们走吧。 647 00:35:18,670 --> 00:35:22,120 但是,如果我们不这样做,没有 这些其他事情的工作。 648 00:35:22,120 --> 00:35:22,500 对不对? 649 00:35:22,500 --> 00:35:23,800 所以只有这一个工程。 650 00:35:23,800 --> 00:35:29,100 而且,为了时间,我不会 去成,你知道,把 651 00:35:29,100 --> 00:35:29,770 下其他的人。 652 00:35:29,770 --> 00:35:32,020 这是结束时, 排序的,故事情节 - 653 00:35:32,020 --> 00:35:33,400 我想向大家展示 你的脚本。 654 00:35:33,400 --> 00:35:36,330 655 00:35:36,330 --> 00:35:43,490 >> 而且,我确实有一个摸索出的例子, 实际上,就在这里。 656 00:35:43,490 --> 00:35:48,090 所以,这就是故事板 我以前所作。 657 00:35:48,090 --> 00:35:52,740 所以,你可以看到,这是 我的导航控制器。 658 00:35:52,740 --> 00:35:57,040 然后,我有我的第一个视图控制器, 然后,我有我的表视图控制器, 659 00:35:57,040 --> 00:35:58,980 然后我把所有这些 - 660 00:35:58,980 --> 00:36:01,180 所以以前,我是做 一些非常不同。 661 00:36:01,180 --> 00:36:04,450 所以,原谅那些东西。 662 00:36:04,450 --> 00:36:07,930 也许过一会我会前清理 我把它送上生产。 663 00:36:07,930 --> 00:36:12,800 >> 但是,如果我们运行这个,我们拭目以待 所有的选项 664 00:36:12,800 --> 00:36:14,050 提供给我们。 665 00:36:14,050 --> 00:36:18,540 666 00:36:18,540 --> 00:36:21,320 除了我没有做背景 这些颜色。 667 00:36:21,320 --> 00:36:26,510 所以,漂亮的简单应用程序。 668 00:36:26,510 --> 00:36:28,340 >> 现在,让我们尝试解决 这种编程方式。 669 00:36:28,340 --> 00:36:31,270 670 00:36:31,270 --> 00:36:32,130 确定。 671 00:36:32,130 --> 00:36:37,570 因此,要做到这一点,我们只是要 开始一个新的Xcode项目。 672 00:36:37,570 --> 00:36:41,920 我们会做一个空的应用程序现在, 因为我们不希望有 673 00:36:41,920 --> 00:36:42,380 故事情节。 674 00:36:42,380 --> 00:36:46,590 所以,我只是限制自己不 使用任何脚本,以及一个 675 00:36:46,590 --> 00:36:49,170 空的应用程序不会 给我一个脚本。 676 00:36:49,170 --> 00:36:52,256 这仅仅是为了防止 我作弊。 677 00:36:52,256 --> 00:36:54,428 让我们来看看。 678 00:36:54,428 --> 00:36:55,360 等待。 679 00:36:55,360 --> 00:36:55,960 难道我 - 680 00:36:55,960 --> 00:36:56,448 是。 681 00:36:56,448 --> 00:36:57,698 确定。 682 00:36:57,698 --> 00:37:08,650 683 00:37:08,650 --> 00:37:09,180 >> 右。 684 00:37:09,180 --> 00:37:16,790 所以,在这里,我们只剩下 但没有别的代码。 685 00:37:16,790 --> 00:37:19,460 所以,让我搬这个窗口 略微超过。 686 00:37:19,460 --> 00:37:22,020 687 00:37:22,020 --> 00:37:22,260 右。 688 00:37:22,260 --> 00:37:28,160 正如你可以在这里看到,唯一的文件 我们给出的AppDelegate.h和点 689 00:37:28,160 --> 00:37:30,500 m,且我们没有 故事情节了。 690 00:37:30,500 --> 00:37:39,580 >> 因此,如果我们运行这个,我们仍然要 到达白屏,感谢上帝。 691 00:37:39,580 --> 00:37:42,280 OK - 白色屏幕,但没有别的。 692 00:37:42,280 --> 00:37:45,260 而且,这里是重要的组成部分。 693 00:37:45,260 --> 00:37:47,810 这是那里的行动发生。 694 00:37:47,810 --> 00:37:51,410 在以前的版本中,有 这里通常没有代码,但 695 00:37:51,410 --> 00:37:55,600 故事情节主要提供 此功能代码的一部分。 696 00:37:55,600 --> 00:37:57,470 我不会去到如何的详细信息。 697 00:37:57,470 --> 00:38:02,890 >> 而我们现在要做的是,我们要 走在这里,和这个小空间 698 00:38:02,890 --> 00:38:05,050 再次开始创建我们的应用程序。 699 00:38:05,050 --> 00:38:06,092 所以 - 700 00:38:06,092 --> 00:38:06,318 是吗? 701 00:38:06,318 --> 00:38:07,450 >> 观众:缩放? 702 00:38:07,450 --> 00:38:07,770 >> RHED史:缩放。 703 00:38:07,770 --> 00:38:09,020 是的,当然。 704 00:38:09,020 --> 00:38:13,940 705 00:38:13,940 --> 00:38:14,520 确定。 706 00:38:14,520 --> 00:38:17,380 我会打字,所以这不应该 事情太多了。 707 00:38:17,380 --> 00:38:17,940 确定。 708 00:38:17,940 --> 00:38:22,720 >> 因此,首先,请记住,我们想创造 导航控制器,对不对? 709 00:38:22,720 --> 00:38:27,090 而且,正如你可以在这里看到,Xcode的 做一个真正伟大的工作 710 00:38:27,090 --> 00:38:28,070 自灌。 711 00:38:28,070 --> 00:38:31,650 所以,你会发现,该名称 一切是一个很多的时间比 712 00:38:31,650 --> 00:38:33,910 平常,但Xcode的填充它给你的。 713 00:38:33,910 --> 00:38:35,710 这样我就可以直接按Enter键。 714 00:38:35,710 --> 00:38:40,180 >> 所以,我想创建一个UI导航 控制器指针,我可以调用它 715 00:38:40,180 --> 00:38:41,430 navigationController。 716 00:38:41,430 --> 00:38:43,040 717 00:38:43,040 --> 00:38:44,470 现在,我该怎么做呢? 718 00:38:44,470 --> 00:38:49,510 这个等号后,我需要,第一, 记忆里创建它。 719 00:38:49,510 --> 00:38:53,790 所以,我打算做NavigationController 页头 - 720 00:38:53,790 --> 00:38:56,640 所以,这是类似的malloc, 您在C中用到的家伙 - 721 00:38:56,640 --> 00:38:58,400 然后,我将初始化它。 722 00:38:58,400 --> 00:39:03,670 >> 所以,这真的很重要,任何 您创建的对象,你要 723 00:39:03,670 --> 00:39:04,940 alloc和初始化它。 724 00:39:04,940 --> 00:39:08,600 这将创造它, 内存里面instantialize它, 725 00:39:08,600 --> 00:39:10,480 现在你可以使用它。 726 00:39:10,480 --> 00:39:10,780 没事吧? 727 00:39:10,780 --> 00:39:14,360 如果你不这样做,你的对象做 不存在的,你会碰到一堆 728 00:39:14,360 --> 00:39:17,290 的问题。 729 00:39:17,290 --> 00:39:20,250 >> 然后,我要创建 一个视图控制器,对不对? 730 00:39:20,250 --> 00:39:25,580 所以,我想创建一个的UIViewController 明星 - 731 00:39:25,580 --> 00:39:29,620 所以,一切都在一个指针 Objective-C语言,而我要做的事情 732 00:39:29,620 --> 00:39:31,600 类似的东西,在这里 - 733 00:39:31,600 --> 00:39:32,850 ALLOC,初始化。 734 00:39:32,850 --> 00:39:38,680 735 00:39:38,680 --> 00:39:40,150 确定。 736 00:39:40,150 --> 00:39:43,450 >> 然后我什么都做的是,我 去 - 所以,请记住,当我们做 737 00:39:43,450 --> 00:39:45,360 在导航控制器嵌入? 738 00:39:45,360 --> 00:39:46,920 这是你如何做到这一点的代码。 739 00:39:46,920 --> 00:39:54,550 你要做的navigationController 740 00:39:54,550 --> 00:39:55,780 pushViewController - 741 00:39:55,780 --> 00:39:57,636 >> 观众:[听不清]。 742 00:39:57,636 --> 00:39:59,030 会发生这种情况对我们来说,还是 - ? 743 00:39:59,030 --> 00:40:00,080 >> RHED师:哦,是的。 744 00:40:00,080 --> 00:40:00,550 号 745 00:40:00,550 --> 00:40:02,740 它喜欢我更好。 746 00:40:02,740 --> 00:40:04,670 不,它会为你工作了。 747 00:40:04,670 --> 00:40:06,700 所以,这些都是方法。 748 00:40:06,700 --> 00:40:10,400 所以pushViewController是一种方法,并 还更具体地,它是一个 749 00:40:10,400 --> 00:40:13,590 UI的实例方法 导航控制器。 750 00:40:13,590 --> 00:40:20,030 因为我要创建我的UI导航 控制器的明星,然后我 751 00:40:20,030 --> 00:40:24,510 可以调用这个pushViewController我 的用户界面导航特定实例 752 00:40:24,510 --> 00:40:25,010 控制器。 753 00:40:25,010 --> 00:40:29,490 >> 观众:我们有没有做确切的 一句话,或者它已经为它存在吗? 754 00:40:29,490 --> 00:40:31,380 >> RHED石:是的,因为它是一个方法。 755 00:40:31,380 --> 00:40:32,200 这就像一个函数。 756 00:40:32,200 --> 00:40:33,330 这就像printf的。 757 00:40:33,330 --> 00:40:34,390 这就像scanf函数。 758 00:40:34,390 --> 00:40:36,250 这就像strcompare。 759 00:40:36,250 --> 00:40:40,310 除了它知道你可能要 型,并发现它会永远 760 00:40:40,310 --> 00:40:42,740 拿出的东西都是 法律上允许你。 761 00:40:42,740 --> 00:40:47,620 所以,如果没有显示在这里, 那么什么是错的。 762 00:40:47,620 --> 00:40:50,550 >> 所以,pushViewController。 763 00:40:50,550 --> 00:40:52,580 所以,现在,我要推 我新创建的 764 00:40:52,580 --> 00:40:56,850 的UIViewController,然后,动画 - 765 00:40:56,850 --> 00:40:57,470 也许不是。 766 00:40:57,470 --> 00:41:00,110 因为这将是 第一个视图控制器。 767 00:41:00,110 --> 00:41:03,210 我的意思是,即使我做的动画, 它可能不会出现,因为 768 00:41:03,210 --> 00:41:05,050 它的第一个画面。 769 00:41:05,050 --> 00:41:06,540 >> 并记住括号。 770 00:41:06,540 --> 00:41:08,850 所以,请记住,我们是如何使用括号? 771 00:41:08,850 --> 00:41:11,870 并在括号里面, 在一个对象的方法调用 - 772 00:41:11,870 --> 00:41:15,910 所以我们的目标是导航 控制器,该方法是一种推 773 00:41:15,910 --> 00:41:17,210 视图控制器的动画。 774 00:41:17,210 --> 00:41:21,920 看看它是如何将两个参数, 他们正在通过排序的,分离的, 775 00:41:21,920 --> 00:41:24,390 也就是说,和一个冒号。 776 00:41:24,390 --> 00:41:28,300 因此,Objective-C语言试图使那该多好 和您轻松大声读出 - 777 00:41:28,300 --> 00:41:33,020 你的代码 - 并使其半, 排序的,是有意义的。 778 00:41:33,020 --> 00:41:37,150 >> 但是,这样做只是这 是不够的。 779 00:41:37,150 --> 00:41:39,780 让我缩小了。 780 00:41:39,780 --> 00:41:44,210 这样做只是这样是不够的 得到了什么,我们得到了以前。 781 00:41:44,210 --> 00:41:48,580 所以在这里,你会发现,有 其实不会成为任何形式的 782 00:41:48,580 --> 00:41:50,190 酒吧,在这里,对不对? 783 00:41:50,190 --> 00:41:54,680 有没有导航栏,这意味着 我们还没有得到它。 784 00:41:54,680 --> 00:41:58,850 >> 我们可以测试出来,也通过, 也许,改变的背景 785 00:41:58,850 --> 00:42:00,460 的ViewController,对不对? 786 00:42:00,460 --> 00:42:01,710 ViewController.background- - 787 00:42:01,710 --> 00:42:03,155 788 00:42:03,155 --> 00:42:03,640 啊。 789 00:42:03,640 --> 00:42:07,690 那么,怎么看的ViewController没有 背景颜色,即使我 790 00:42:07,690 --> 00:42:08,780 要访问它? 791 00:42:08,780 --> 00:42:14,080 那是因为的ViewController 是一个容器的看法。 792 00:42:14,080 --> 00:42:19,490 因此,它有一个视图属性, 然后有一个背景颜色。 793 00:42:19,490 --> 00:42:25,510 >> 而且,我可以将它设置,有点繁琐, 通过调用颜色 794 00:42:25,510 --> 00:42:28,130 上的UIColor对象。 795 00:42:28,130 --> 00:42:33,210 所以,在这里通知,redColor是一个方法。 796 00:42:33,210 --> 00:42:36,750 它的UIColor的类方法。 797 00:42:36,750 --> 00:42:40,820 因为我没有创建一个 一的UIColor,才能真正的实例 798 00:42:40,820 --> 00:42:42,020 调用它的方法。 799 00:42:42,020 --> 00:42:45,050 我只是,只是,把它称为 上式般的名字。 800 00:42:45,050 --> 00:42:49,620 我一样,把它称为对整型,如果整型过, 像中,一种方法它,例如。 801 00:42:49,620 --> 00:42:52,380 >> 所以,如果我们运行这段代码,我们将 注意到该背景是 802 00:42:52,380 --> 00:42:53,540 其实不是红色。 803 00:42:53,540 --> 00:42:54,790 它仍然是白色的。 804 00:42:54,790 --> 00:42:57,720 805 00:42:57,720 --> 00:43:04,550 以及我们如何围绕的就是, 你注意到了self.window。 806 00:43:04,550 --> 00:43:08,260 也就是说,像,最终容器 为您的应用程序。 807 00:43:08,260 --> 00:43:11,630 它是一个包含最终事 一切在屏幕上,用于 808 00:43:11,630 --> 00:43:13,650 iPhone或iPad的应用程序。 809 00:43:13,650 --> 00:43:20,970 >> 而且,方便,self.window 具有此属性称为 810 00:43:20,970 --> 00:43:22,650 RootViewController的。 811 00:43:22,650 --> 00:43:26,480 而这将是指针 里面的第一个视图控制器 812 00:43:26,480 --> 00:43:27,270 你的应用程序。 813 00:43:27,270 --> 00:43:32,000 所以,我们要在这里做的,现在,是 以设置等于我们的导航 814 00:43:32,000 --> 00:43:32,710 控制器。 815 00:43:32,710 --> 00:43:33,760 对不对? 816 00:43:33,760 --> 00:43:37,490 因为,从技术上讲,导航 控制器是我们的第一个观点 817 00:43:37,490 --> 00:43:38,770 控制器。 818 00:43:38,770 --> 00:43:46,160 它跟踪的另一种观点数组 控制器,而我们这推 819 00:43:46,160 --> 00:43:49,810 视图控制器到该阵列 在导航控制器。 820 00:43:49,810 --> 00:43:52,640 >> 所以,你不希望这样做。 821 00:43:52,640 --> 00:43:54,225 这不会真正帮助你。 822 00:43:54,225 --> 00:43:58,040 你要做到这一点,如果你想要做的 导航控制器,其中大部分 823 00:43:58,040 --> 00:44:01,100 你可能会因为你想要的 排序的,有某种, 824 00:44:01,100 --> 00:44:04,840 像,菜单返回到或一些 主页回去,而不是 825 00:44:04,840 --> 00:44:05,470 空屏幕。 826 00:44:05,470 --> 00:44:05,920 是吗? 827 00:44:05,920 --> 00:44:11,460 >> 观众:是不是不舒服 让你放大了 - 828 00:44:11,460 --> 00:44:12,710 >> RHED师:是啊。 829 00:44:12,710 --> 00:44:15,310 830 00:44:15,310 --> 00:44:15,720 所以,是的。 831 00:44:15,720 --> 00:44:22,370 这是代码,而现在 让我们来测试它。 832 00:44:22,370 --> 00:44:27,920 >> 那么,我们走吧。 833 00:44:27,920 --> 00:44:29,170 魔术队。 834 00:44:29,170 --> 00:44:30,960 835 00:44:30,960 --> 00:44:32,690 因此,确定。 836 00:44:32,690 --> 00:44:34,420 谢谢。 837 00:44:34,420 --> 00:44:35,000 确定。 838 00:44:35,000 --> 00:44:38,690 所以,现在,我们想要做的是什么 - 所以, 那种我们有限的,在这里,对不对? 839 00:44:38,690 --> 00:44:45,130 我们可能写的一切 这里面的一个功能的。 840 00:44:45,130 --> 00:44:48,470 但是,这并不是多么的iOS开发 通常工作。 841 00:44:48,470 --> 00:44:53,030 >> 所以,我们要做的是什么,我们是 要建立一些新的文件。 842 00:44:53,030 --> 00:44:57,110 但是,更具体地说,我们要 创建另一个Objective-C类,或 843 00:44:57,110 --> 00:44:58,010 另一个对象 - 844 00:44:58,010 --> 00:45:00,700 类和对象是可以互换的 在这里。 845 00:45:00,700 --> 00:45:06,460 而且,这里的如何我可以,可能, 创建另一个U类控制器。 846 00:45:06,460 --> 00:45:12,030 >> 因此,它的一个子类,你会发现, 在这里,它是一个子类的 847 00:45:12,030 --> 00:45:15,910 UI视图控制器,但是我可以 在这里把它叫做任何其他名称。 848 00:45:15,910 --> 00:45:19,400 我可以把这种CS50,我可以打电话 这个视图控制器,我可以打电话 849 00:45:19,400 --> 00:45:21,640 这胡说视图控制器 - 850 00:45:21,640 --> 00:45:22,400 任何我想要的。 851 00:45:22,400 --> 00:45:24,140 这仅仅是类的名称。 852 00:45:24,140 --> 00:45:27,020 然而,这将是重要的 因为,从本质上讲,我在做什么 853 00:45:27,020 --> 00:45:29,720 这里就是我创造 另一个类名。 854 00:45:29,720 --> 00:45:34,140 所以,这将是一样,有些 排序类型或对象。 855 00:45:34,140 --> 00:45:35,910 因此,它应该是一个有点普通。 856 00:45:35,910 --> 00:45:37,225 它不会是非常具体的。 857 00:45:37,225 --> 00:45:40,410 858 00:45:40,410 --> 00:45:44,480 >> 而且,我也想点 出这两个选项。 859 00:45:44,480 --> 00:45:48,430 因为我们正在做的一切内部 代码,有时它是一个容易得多 860 00:45:48,430 --> 00:45:53,540 引入一个接口文件,这样 我可以从字面上拖放,如 861 00:45:53,540 --> 00:45:54,960 我们先前做与故事情节 - 862 00:45:54,960 --> 00:45:57,810 你知道,一个标号或一个按钮, 或任何其他。 863 00:45:57,810 --> 00:46:01,950 因此,xibs是文件,让您 做到这一点,你必须把它挂 864 00:46:01,950 --> 00:46:04,310 这个视图控制器文件。 865 00:46:04,310 --> 00:46:06,540 >> 所以,我要故意 不检查。 866 00:46:06,540 --> 00:46:12,510 通常我会检查这一点,如果我 只是这样做的iPhone或iPad,我 867 00:46:12,510 --> 00:46:16,340 会检查这一点,只是有一个 对,你知道的,iPhone或iPad的。 868 00:46:16,340 --> 00:46:19,750 但自从我做通用的,我要去 后来创建了其中的两个。 869 00:46:19,750 --> 00:46:22,220 所以,我要故意 取消选中此。 870 00:46:22,220 --> 00:46:23,940 >> 这也是非常重要的。 871 00:46:23,940 --> 00:46:27,490 很多时候,我有错误 这个地方没有检查。 872 00:46:27,490 --> 00:46:31,930 因此,很明显,这个文件是不是, 有点像,包括进口或 873 00:46:31,930 --> 00:46:33,740 这里面的test文件夹中。 874 00:46:33,740 --> 00:46:38,180 所以,我的代码有完全不知道 这个文件的存在,并且 875 00:46:38,180 --> 00:46:41,080 这造成了很多痛苦的 和调试的时间。 876 00:46:41,080 --> 00:46:44,360 但是,只要确保这被检查,以便 ,你知道,这样做的目标 877 00:46:44,360 --> 00:46:47,510 文件是这种应用。 878 00:46:47,510 --> 00:46:48,310 >> 确定。 879 00:46:48,310 --> 00:46:51,680 所以,现在我们已经创建了两个新的文件。 880 00:46:51,680 --> 00:46:54,050 并且这些文件看起来很空。 881 00:46:54,050 --> 00:46:59,550 而且,事实上,让我们也继续 通过创建的厦门国际银行文件。 882 00:46:59,550 --> 00:47:03,690 所以,以前,我是在 可可触摸下拉。 883 00:47:03,690 --> 00:47:06,880 现在,我要进入用户 界面触摸,并且你可以看到,我 884 00:47:06,880 --> 00:47:08,120 可以创建一个脚本。 885 00:47:08,120 --> 00:47:11,710 >> 所以,即使我开始用空 应用程序中,我仍然可以使用 886 00:47:11,710 --> 00:47:12,340 故事情节。 887 00:47:12,340 --> 00:47:15,480 虽然,它得到棘手条款中 你想如何连接 888 00:47:15,480 --> 00:47:16,820 那你的代码。 889 00:47:16,820 --> 00:47:18,230 所以,我不会去那里。 890 00:47:18,230 --> 00:47:22,160 >> 但是,我们想要做的 现在是创建一个视图。 891 00:47:22,160 --> 00:47:25,720 您可以选择的 一个iPhone或一个iPad。 892 00:47:25,720 --> 00:47:30,180 并且典型地,以表示 差异 - 如果你正在做一个 893 00:47:30,180 --> 00:47:31,950 普遍应用 - 894 00:47:31,950 --> 00:47:35,980 你要么把下划线的iPhone, 或者你可以做一个Twiddly。 895 00:47:35,980 --> 00:47:36,980 这其实并不重要。 896 00:47:36,980 --> 00:47:40,890 它只是让你与众不同 哪种说法是哪个设备。 897 00:47:40,890 --> 00:47:43,470 898 00:47:43,470 --> 00:47:44,430 >> 所以,现在看。 899 00:47:44,430 --> 00:47:47,550 我有,我可以一起工作的画面。 900 00:47:47,550 --> 00:47:53,530 因此,例如,我可以把一个标签 在这里,你知道的,我也可以把 901 00:47:53,530 --> 00:47:54,820 这里另一个按钮。 902 00:47:54,820 --> 00:47:58,730 我不会打扰改变 这里的值。 903 00:47:58,730 --> 00:48:09,050 >> 但是,什么是重要的是在这里 该文件的所有者 - 904 00:48:09,050 --> 00:48:13,660 所以,我的iPhone里面 认为,iPhone的xib文件。 905 00:48:13,660 --> 00:48:18,050 而在这个导航区域向下或 下拉菜单,我想去的 906 00:48:18,050 --> 00:48:19,090 文件的所有者。 907 00:48:19,090 --> 00:48:22,630 这是真的 这里重要的一步。 908 00:48:22,630 --> 00:48:27,780 我想使类视图 控制器,从而使这个xib文件是 909 00:48:27,780 --> 00:48:30,030 将要与相关的 我的视图控制器。 910 00:48:30,030 --> 00:48:33,590 911 00:48:33,590 --> 00:48:39,360 而且任何事情,我做我的看法里 控制器编程是 912 00:48:39,360 --> 00:48:42,800 将在这里体现的。 913 00:48:42,800 --> 00:48:46,270 >> 如此,但是,请注意 - 914 00:48:46,270 --> 00:48:55,995 其实,让我们这一观点 背景蓝色,例如。 915 00:48:55,995 --> 00:49:00,280 916 00:49:00,280 --> 00:49:01,530 或绿色。 917 00:49:01,530 --> 00:49:03,870 918 00:49:03,870 --> 00:49:07,950 然后,如果你会注意到,早在 这段代码中,这是我们得到了我们的 919 00:49:07,950 --> 00:49:09,200 导航控制器。 920 00:49:09,200 --> 00:49:12,650 921 00:49:12,650 --> 00:49:18,310 >> 尽管我们做了这一步,它的 仍然会是红色的,不是绿色的。 922 00:49:18,310 --> 00:49:20,350 还有一个原因。 923 00:49:20,350 --> 00:49:28,090 这是因为,当我们inited 我们的视图控制器,在这里 - 924 00:49:28,090 --> 00:49:30,010 对不起,这是一个有点疯狂 - 925 00:49:30,010 --> 00:49:34,520 当我们inited我们的视图控制器在这里, 我们inited的一般类型的其 926 00:49:34,520 --> 00:49:35,990 的UIViewController。 927 00:49:35,990 --> 00:49:36,560 好不好? 928 00:49:36,560 --> 00:49:40,560 所以,我们甚至没有做 用这个类。 929 00:49:40,560 --> 00:49:42,030 >> 所以请记住,这就像一个类了。 930 00:49:42,030 --> 00:49:47,160 它可以被认为是一种类型的,只是 为的UIViewController是一个类型。 931 00:49:47,160 --> 00:49:51,080 并且为了使用,什么 我们需要做的是将其导入 - 932 00:49:51,080 --> 00:49:52,520 进口的ViewController - 933 00:49:52,520 --> 00:49:55,750 并且,你可以看到,它 自动填充它为我。 934 00:49:55,750 --> 00:49:56,570 所以,的ViewController - 935 00:49:56,570 --> 00:50:02,070 而现在,在这里,我可以改变这个 的UIViewController到的ViewController。 936 00:50:02,070 --> 00:50:05,050 而现在,在这里,我可以改变 这的ViewController。 937 00:50:05,050 --> 00:50:07,790 938 00:50:07,790 --> 00:50:09,250 >> 让我们再次运行此。 939 00:50:09,250 --> 00:50:16,970 940 00:50:16,970 --> 00:50:19,690 它仍然是红色。 941 00:50:19,690 --> 00:50:23,370 以及为什么它的原因 尚红是因为 - 942 00:50:23,370 --> 00:50:26,230 哇,那里发生了什么? 943 00:50:26,230 --> 00:50:31,500 我们希望这个关联厦门国际银行 文件与视图控制器。 944 00:50:31,500 --> 00:50:37,540 然而,为了真正做到 这一点,我们需要进入这个。 945 00:50:37,540 --> 00:50:42,980 而当我们做了init,我们想要做的 initWithNibName,然后我们要 946 00:50:42,980 --> 00:50:48,910 做在字符串View_iPhone, 例如。 947 00:50:48,910 --> 00:50:51,700 你可以在这里忽略了捆绑。 948 00:50:51,700 --> 00:50:54,965 >> 并且这将允许 我们,其实 - 949 00:50:54,965 --> 00:51:00,620 950 00:51:00,620 --> 00:51:02,160 嗯哦,有一个问题。 951 00:51:02,160 --> 00:51:09,300 952 00:51:09,300 --> 00:51:09,980 右。 953 00:51:09,980 --> 00:51:17,670 >> 因此,有一个问题,因为在 我们认为xib文件,我们有一个标签, 954 00:51:17,670 --> 00:51:18,720 我们有一个按钮。 955 00:51:18,720 --> 00:51:23,660 不过,即使我们已经连接 这两个,还有里面什么 956 00:51:23,660 --> 00:51:27,440 ViewController.h或ViewController.m 反映这些 957 00:51:27,440 --> 00:51:29,160 按钮或这些标签。 958 00:51:29,160 --> 00:51:32,425 因此,我们需要写那些为 视图控制器的性能。 959 00:51:32,425 --> 00:51:35,290 960 00:51:35,290 --> 00:51:39,490 >> 所以,你这是怎么声明 一个属性。 961 00:51:39,490 --> 00:51:43,422 它需要在,通常 这两个选项。 962 00:51:43,422 --> 00:51:48,690 对我们来说,和本次研讨会的目的, 我要说的是,在一般情况下, 963 00:51:48,690 --> 00:51:52,250 大多数属性都是非原子 和保留。 964 00:51:52,250 --> 00:51:55,420 你可以通过谷歌搜索阅读起来, 要知道,之间的差异 965 00:51:55,420 --> 00:51:58,620 非原子和保留上,你 众所周知,谷歌什么的。 966 00:51:58,620 --> 00:52:01,090 我会带你到一样,栈 溢出,那里的人都会有 967 00:52:01,090 --> 00:52:03,605 答案的差异 之间的那些。 968 00:52:03,605 --> 00:52:07,000 但现在,这就是我们 要关注的。 969 00:52:07,000 --> 00:52:12,790 >> 我们想使一个UI标签,明星, 我们可以把它叫做任何我们想要的。 970 00:52:12,790 --> 00:52:15,710 我们可以调用这个,你知道,标签。 971 00:52:15,710 --> 00:52:18,270 972 00:52:18,270 --> 00:52:20,110 而且,我们将创建另一个 一个用于按钮。 973 00:52:20,110 --> 00:52:24,380 974 00:52:24,380 --> 00:52:29,910 要记住,星号, 因为我们正在处理的指针 975 00:52:29,910 --> 00:52:36,740 几乎无处不在里面 的Objective-C语言。 976 00:52:36,740 --> 00:52:42,110 >> 不过,这仍然没有解决 的问题,因为你可以在这里看到。 977 00:52:42,110 --> 00:52:50,540 其原因是因为,每当我们 要连接一个xib文件标签或 978 00:52:50,540 --> 00:52:55,690 按钮的程序,或头 和实现文件,我们要 979 00:52:55,690 --> 00:52:58,255 加上这一段代码 - 980 00:52:58,255 --> 00:53:00,610 插座。 981 00:53:00,610 --> 00:53:03,600 请注意,这是一个关键的字。 982 00:53:03,600 --> 00:53:07,970 >> 而且,只要我完成打字 说出来,它应该有这些 983 00:53:07,970 --> 00:53:09,100 两个圈子,在这里。 984 00:53:09,100 --> 00:53:11,200 通常情况下,他们没有填写。 985 00:53:11,200 --> 00:53:12,920 我不知道他们为什么。 986 00:53:12,920 --> 00:53:21,370 但通常情况下,你将不得不手动 通过去的这一边连接起来 987 00:53:21,370 --> 00:53:23,530 公用事业领域。 988 00:53:23,530 --> 00:53:28,430 >> 所以,现在,我有我的标签 选择,我想拖这个新 989 00:53:28,430 --> 00:53:33,910 引用插座到我的文件的所有者, 然后点击标签。 990 00:53:33,910 --> 00:53:40,230 所以,现在,终于,这个标签是 连接到该标签。 991 00:53:40,230 --> 00:53:44,950 而且这个标签是什么,我们要 使用编程方式来改变其 992 00:53:44,950 --> 00:53:49,250 文字,其字体,它的背景 颜色,等等。 993 00:53:49,250 --> 00:53:52,430 >> 那么,我们为什么不这样做的 同为按钮? 994 00:53:52,430 --> 00:53:54,770 正如你会发现,对于该按钮, 这是一个稍微复杂一点。 995 00:53:54,770 --> 00:53:59,060 因为,我的意思是,你应该 按下一个按钮,所以它得到了很多 996 00:53:59,060 --> 00:54:02,950 对于用户如何选择 可以按下一个按钮。 997 00:54:02,950 --> 00:54:06,570 然后,我们将在后面上看到 我们可以将此接口连接到我们的 998 00:54:06,570 --> 00:54:09,140 代码,使其工作。 999 00:54:09,140 --> 00:54:12,770 >> 所以,虽然现在,我们要连接 它以实际的按钮 1000 00:54:12,770 --> 00:54:13,570 里面的我们的代码。 1001 00:54:13,570 --> 00:54:19,640 所以,我们去新引用插座, 然后执行按钮。 1002 00:54:19,640 --> 00:54:22,068 现在,让我们再次运行此。 1003 00:54:22,068 --> 00:54:23,040 嗯哦。 1004 00:54:23,040 --> 00:54:23,890 确定。 1005 00:54:23,890 --> 00:54:25,140 我不知道是怎么回事了。 1006 00:54:25,140 --> 00:54:48,450 1007 00:54:48,450 --> 00:54:49,700 哇。 1008 00:54:49,700 --> 00:54:57,380 1009 00:54:57,380 --> 00:54:58,960 只是一个瞬间,在这里。 1010 00:54:58,960 --> 00:55:02,490 >> 其实,我们为什么不采取 看看另一个例子 1011 00:55:02,490 --> 00:55:05,800 时间的关系。 1012 00:55:05,800 --> 00:55:06,200 确定。 1013 00:55:06,200 --> 00:55:10,610 所以,这里的更容易准备 例子的ViewController。 1014 00:55:10,610 --> 00:55:13,230 1015 00:55:13,230 --> 00:55:17,110 正如你可以看到这里,我已经包括 的属性 1016 00:55:17,110 --> 00:55:18,460 标签和按钮。 1017 00:55:18,460 --> 00:55:20,370 然后,这段代码在这里 - 1018 00:55:20,370 --> 00:55:21,830 这IBaction - 1019 00:55:21,830 --> 00:55:27,740 在这里,以这个按钮的连接。 1020 00:55:27,740 --> 00:55:33,940 所以你可以在这里看到,触摸里面 被连接到选择器 1021 00:55:33,940 --> 00:55:37,390 所谓的按钮按下。 1022 00:55:37,390 --> 00:55:41,700 >> 所以,我们实际上可以经过 运动再次,在这里,通过采取润色 1023 00:55:41,700 --> 00:55:48,750 内,将其拖动到 文件的所有者,然后 1024 00:55:48,750 --> 00:55:51,570 点击按钮按下。 1025 00:55:51,570 --> 00:55:52,820 现在,让我们运行我们的代码。 1026 00:55:52,820 --> 00:55:55,710 1027 00:55:55,710 --> 00:56:02,020 所以,现在,这个按钮现在工作和 将带我们到下一个页面。 1028 00:56:02,020 --> 00:56:08,430 >> 而且,在我们的视图控制器而言, 这是一段代码,把 1029 00:56:08,430 --> 00:56:10,000 护理按下按钮的。 1030 00:56:10,000 --> 00:56:14,260 而且重要的是要注意在这里,那 我创建了另一种类型的视图 1031 00:56:14,260 --> 00:56:16,330 控制器称为表 视图控制器。 1032 00:56:16,330 --> 00:56:19,900 所以,这是类似于在背 故事情节,当我拖着之一 1033 00:56:19,900 --> 00:56:23,450 这些表视图控制器 到故事板。 1034 00:56:23,450 --> 00:56:24,470 我创建另一个 1035 00:56:24,470 --> 00:56:30,000 >> 指针表视图控制器, 的alloc和init-ing它,然后做 1036 00:56:30,000 --> 00:56:34,490 自点导航控制器, 推的ViewController,这个新的 1037 00:56:34,490 --> 00:56:35,350 的ViewController。 1038 00:56:35,350 --> 00:56:39,750 我已经设定动画为yes, 因为现在在我的应用程序,我的 1039 00:56:39,750 --> 00:56:45,670 要真正看到动画会 从主页到表 1040 00:56:45,670 --> 00:56:46,920 视图控制器。 1041 00:56:46,920 --> 00:56:48,830 1042 00:56:48,830 --> 00:56:51,110 >> 观众:你还是担心 关于垃圾收集的? 1043 00:56:51,110 --> 00:56:51,840 >> RHED石:那是什么? 1044 00:56:51,840 --> 00:56:54,740 号 1045 00:56:54,740 --> 00:56:58,970 所以,问题是,你有没有 垃圾收集的工作? 1046 00:56:58,970 --> 00:57:03,470 所以,Xcode的4有一个像ARC,它是 自动引用计数。 1047 00:57:03,470 --> 00:57:06,120 因此,通常当你开始一个新的 项目,你会检查,因为 1048 00:57:06,120 --> 00:57:09,440 没有人真正想要对付 释放内存之类的东西。 1049 00:57:09,440 --> 00:57:13,720 但我认为在Xcode 5,竟然没有 在新项目的选择。 1050 00:57:13,720 --> 00:57:16,750 因此,它会自动 这是否适合你。 1051 00:57:16,750 --> 00:57:16,920 是吗? 1052 00:57:16,920 --> 00:57:20,970 >> 观众:你可以导出 PDF在你的脚本? 1053 00:57:20,970 --> 00:57:22,020 >> RHED石:是的,绝对。 1054 00:57:22,020 --> 00:57:28,180 因此,所有这些将被纳入 源代码,所以你们可以查出来 1055 00:57:28,180 --> 00:57:30,730 实际的Xcode项目吧。 1056 00:57:30,730 --> 00:57:31,105 是吗? 1057 00:57:31,105 --> 00:57:35,944 >> 观众:但是,我的意思是一样,我可以 打印与我的故事板的PDF? 1058 00:57:35,944 --> 00:57:38,920 如果我只是想导出 图像显示某人。 1059 00:57:38,920 --> 00:57:39,160 >> RHED师:哦,是的。 1060 00:57:39,160 --> 00:57:41,980 我想,也许,你可以只 采取一个屏幕快照。 1061 00:57:41,980 --> 00:57:44,350 是啊,送他们一个屏幕 拍什么的。 1062 00:57:44,350 --> 00:57:45,600 是啊。 1063 00:57:45,600 --> 00:57:49,170 1064 00:57:49,170 --> 00:57:50,570 >> 那么,让我们来看看。 1065 00:57:50,570 --> 00:57:56,470 由于时间关系,我觉得 这是所有l可今天覆盖。 1066 00:57:56,470 --> 00:57:59,600 但是,我知道这是,其实,只是 几乎没有触及的iOS的表面 1067 00:57:59,600 --> 00:58:00,370 发展。 1068 00:58:00,370 --> 00:58:05,630 因此,请随时与我联系,如果 您有任何关于iOS的任何问题 1069 00:58:05,630 --> 00:58:07,000 发展。 1070 00:58:07,000 --> 00:58:12,840 并希望,我就可以清理 一些用于源代码 1071 00:58:12,840 --> 00:58:16,830 代码文件,这样您将有一些 非常好的例子,一起工作。 1072 00:58:16,830 --> 00:58:21,020 >> 除此之外,如果你们打算 到CS50 Hackathon,我可能会或可能 1073 00:58:21,020 --> 00:58:25,730 不在那里,我可以帮帮忙 一些iOS开发了。 1074 00:58:25,730 --> 00:58:26,980 所以,非常感谢,伙计们。 1075 00:58:26,980 --> 00:58:31,168