1 00:00:00,000 --> 00:00:07,880 2 00:00:07,880 --> 00:00:09,800 >> RHED SHI: Bem-vindo ao veja seminário CS50 - 3 00:00:09,800 --> 00:00:11,630 Introdução ao iOS. 4 00:00:11,630 --> 00:00:13,290 Obrigado a todos por terem vindo. 5 00:00:13,290 --> 00:00:16,610 Espero que você esteja tão animado como eu sou sobre o iOS. 6 00:00:16,610 --> 00:00:22,300 No ano passado, eu levei CS50 como um estudante de segundo ano, e eu basicamente aprendi iOS para o meu 7 00:00:22,300 --> 00:00:23,490 projeto final. 8 00:00:23,490 --> 00:00:26,350 E foi bastante - 9 00:00:26,350 --> 00:00:30,530 bem, não foi fácil, mas existem muitos tutoriais de apoio online. 10 00:00:30,530 --> 00:00:33,760 E eu realmente espero que com este seminário, eu vou dar a vocês uma cabeça 11 00:00:33,760 --> 00:00:36,750 iniciar o desenvolvimento iOS 12 00:00:36,750 --> 00:00:40,490 >> Então, em termos de desenvolvimento iOS, há duas coisas principais que nós 13 00:00:40,490 --> 00:00:42,090 quer cobrir hoje. 14 00:00:42,090 --> 00:00:43,290 Em primeiro lugar, o idioma - 15 00:00:43,290 --> 00:00:46,650 a linguagem vai ser em Objective-C. Nós, na verdade, vai ouvir 16 00:00:46,650 --> 00:00:47,750 algo realmente emocionante. 17 00:00:47,750 --> 00:00:51,500 Assim, você pode juntar-se a maçã inteira comunidade de desenvolvedores e construir alguns 18 00:00:51,500 --> 00:00:52,940 aplicativos realmente impressionantes. 19 00:00:52,940 --> 00:00:58,670 >> Além disso, o iOS 7 é linda, espero, para alguns de vocês. 20 00:00:58,670 --> 00:01:01,130 Mas é controverso, eu sei. 21 00:01:01,130 --> 00:01:05,349 E, principalmente, o que eu quero fazer é guia lo através de Objective-C, e também 22 00:01:05,349 --> 00:01:10,650 Xcode, que é o integrado ambiente de desenvolvimento que você vai ser 23 00:01:10,650 --> 00:01:13,460 trabalhando em para iOS. 24 00:01:13,460 --> 00:01:19,140 >> E assim, apenas uma palavra em Objective-C. Basicamente, é exatamente o mesmo que C, 25 00:01:19,140 --> 00:01:22,790 mas com um monte de outras coisas. 26 00:01:22,790 --> 00:01:27,710 E assim, mais estritamente, é realmente um de C. definir-super Então, qualquer coisa que você 27 00:01:27,710 --> 00:01:32,280 pode fazer em C agora, o que é basicamente como pset de 0 a 6, você 28 00:01:32,280 --> 00:01:34,170 pode fazer em Objective-C. 29 00:01:34,170 --> 00:01:38,620 >> Assim, não sente medo sobre essa nova linguagem que você vai aprender. 30 00:01:38,620 --> 00:01:42,120 Você já cobrimos um monte de que, porque você tudo feito C passado 31 00:01:42,120 --> 00:01:45,880 semestre, só que agora você vai ter muito mais para trabalhar. 32 00:01:45,880 --> 00:01:49,270 E eu só vou levá-lo através de um par de exemplos para destacar alguns 33 00:01:49,270 --> 00:01:53,920 das principais diferenças que eu encontrei foram quando realmente importante que eu aprendi 34 00:01:53,920 --> 00:01:57,180 Objective-C no ano passado. 35 00:01:57,180 --> 00:02:00,910 >> Bem, na verdade, por isso, o outro ponto é, Objective-C é, obviamente, 36 00:02:00,910 --> 00:02:02,200 orientada a objetos. 37 00:02:02,200 --> 00:02:06,340 E nós vamos discutir um pouco sobre o que isso significa mais tarde. 38 00:02:06,340 --> 00:02:11,340 Basicamente, é como como você trabalhou com structs neste pset passado, com 39 00:02:11,340 --> 00:02:13,360 nós e outros similares coisas assim. 40 00:02:13,360 --> 00:02:17,110 Exceto, em Objective-C, tudo é um objeto, e você vai ser 41 00:02:17,110 --> 00:02:20,720 passando em torno de ponteiros para objetos em vez dos próprios valores. 42 00:02:20,720 --> 00:02:25,050 Então, é apenas algo importante para se manter em mente. 43 00:02:25,050 --> 00:02:29,140 >> Então, por que não começamos com alguns diferenças de sintaxe entre C e 44 00:02:29,140 --> 00:02:30,540 Objective-C? 45 00:02:30,540 --> 00:02:38,310 Quero destacar o # include, você sabe, io.h padrão em C e C + +, com 46 00:02:38,310 --> 00:02:44,030 a versão Objective-C de que, o que é # importação, e depois de algum tipo de 47 00:02:44,030 --> 00:02:44,790 arquivo de cabeçalho. 48 00:02:44,790 --> 00:02:48,165 Neste caso, seria UIKit, você sabe, reduzir UIKit.h. 49 00:02:48,165 --> 00:02:53,560 Também poderia ser, você sabe, MKMapView para você cortar MKMapview.h se você quiser 50 00:02:53,560 --> 00:02:56,370 fazer, como, um mapa dentro do seu aplicativo. 51 00:02:56,370 --> 00:02:57,110 Coisas semelhantes assim. 52 00:02:57,110 --> 00:03:01,250 >> Então, o importante é incluir agora mudou para importar. 53 00:03:01,250 --> 00:03:04,340 Mas a idéia ainda permanece. 54 00:03:04,340 --> 00:03:10,460 Você vai ser a importação de algum tipo de arquivo de cabeçalho em seu programa. 55 00:03:10,460 --> 00:03:14,550 >> Também quero destacar a diferença entre printf e NSLog. 56 00:03:14,550 --> 00:03:19,760 No entanto, como dissemos anteriormente, Objective-C é um super-rigoroso conjunto de 57 00:03:19,760 --> 00:03:22,800 C, o que significa que existe printf em Objective-C, também. 58 00:03:22,800 --> 00:03:24,340 Mas, a maioria das pessoas não usam isso. 59 00:03:24,340 --> 00:03:28,245 A maioria das pessoas usam este NSLog porque dá-lhe um carimbo de tempo, e vamos ver 60 00:03:28,245 --> 00:03:29,780 -lo em ação mais tarde. 61 00:03:29,780 --> 00:03:33,560 Mas, é, geralmente, um mais útil maneira de imprimir variáveis. 62 00:03:33,560 --> 00:03:38,220 >> E eu também quero destacar que NSLog leva exatamente da mesma 63 00:03:38,220 --> 00:03:41,650 valores de espaço reservado como printf faz - 64 00:03:41,650 --> 00:03:45,900 assim% d é para um int, % F é para um float. 65 00:03:45,900 --> 00:03:49,750 No entanto, eu quero destacar este último um - 66 00:03:49,750 --> 00:03:52,960 NSLog% arroba - 67 00:03:52,960 --> 00:03:55,390 que é um espaço reservado para um objeto. 68 00:03:55,390 --> 00:04:01,160 E, como eu disse anteriormente, trata Objective-C muito bonito principalmente em objetos, 69 00:04:01,160 --> 00:04:05,020 e por isso este vai entrar em uso quando você pretende imprimir, talvez, talvez uma 70 00:04:05,020 --> 00:04:08,390 NSArray ou NSDictionary, ou um NSString. 71 00:04:08,390 --> 00:04:13,750 >> Assim, também, notar que, em nossa NSLog declaração, temos uma arroba na frente 72 00:04:13,750 --> 00:04:15,380 da citação - 73 00:04:15,380 --> 00:04:20,769 que é para significar que as cordas, agora, em Objective-C são objetos. 74 00:04:20,769 --> 00:04:23,310 Eles não são mais estrelas simplesmente de caracteres. 75 00:04:23,310 --> 00:04:25,530 Eles são objetos e são tratado como tal. 76 00:04:25,530 --> 00:04:28,690 >> Então, é muito importante que, quando você usa NSLog que leva em um NS 77 00:04:28,690 --> 00:04:32,580 corda, o que significa que você terá para incluir um no na frente de seu 78 00:04:32,580 --> 00:04:34,270 aspas. 79 00:04:34,270 --> 00:04:38,290 E é por isso que você vê, aqui, em todas as minha função chama a este NSLog, eu 80 00:04:38,290 --> 00:04:42,400 ter um no na frente das citações, mesmo embora a% d e% f de são 81 00:04:42,400 --> 00:04:45,200 todos a mesma a partir de C. 82 00:04:45,200 --> 00:04:47,930 >> Todas as perguntas até agora? 83 00:04:47,930 --> 00:04:50,920 Vou tentar passar por isso rapidamente, de modo que possamos ter mais tempo para trabalhar 84 00:04:50,920 --> 00:04:55,210 com Xcode e Objective-C, de modo que vocês podem obter mais 85 00:04:55,210 --> 00:04:57,630 familiarizado com ele. 86 00:04:57,630 --> 00:05:01,900 >> Em seguida, quero destacar algo conceitualmente importante. 87 00:05:01,900 --> 00:05:05,130 Assim, em C, a maioria das coisas são funções. 88 00:05:05,130 --> 00:05:06,280 Fazemos uma chamada de função. 89 00:05:06,280 --> 00:05:10,190 Declaramos funções desta forma, com o tipo de retorno primeiro, depois o 90 00:05:10,190 --> 00:05:13,570 nome da função, entre parênteses, e depois quaisquer que sejam os argumentos eo tipo de 91 00:05:13,570 --> 00:05:15,590 estes argumentos que queremos passar dentro 92 00:05:15,590 --> 00:05:19,970 E Objective-C, porque tudo é um objeto ou classe - 93 00:05:19,970 --> 00:05:23,970 assim classe e objeto são dois termos que são principalmente sinónimo uns com os outros, 94 00:05:23,970 --> 00:05:28,270 para que eu possa utilizá-los alternadamente durante todo o seminário. 95 00:05:28,270 --> 00:05:34,090 >> Mas, você vai ver que temos métodos em Objective-C, em vez de funções. 96 00:05:34,090 --> 00:05:36,390 E métodos pertencem aos objetos. 97 00:05:36,390 --> 00:05:38,950 Portanto, assim como, talvez tomar por exemplo, o nó - 98 00:05:38,950 --> 00:05:40,250 nosso tipo de [inaudível] 99 00:05:40,250 --> 00:05:44,390 nó de pset 6 ou 5 - 100 00:05:44,390 --> 00:05:49,590 temos a palavra, a propriedade, ou o próximo ponteiro nó. 101 00:05:49,590 --> 00:05:53,880 Os métodos são simplesmente funções dentro de algum tipo de estrutura. 102 00:05:53,880 --> 00:05:57,510 >> Assim, neste caso, a estrutura seria o objeto e, em seguida, o método é 103 00:05:57,510 --> 00:05:59,260 algo que pertence a um objeto. 104 00:05:59,260 --> 00:06:02,650 E é assim que você deve declarar, mais ou menos, um método. 105 00:06:02,650 --> 00:06:07,990 Você poderia começar com, mais uma vez, o retorno tipo - então, eu tentei cor 106 00:06:07,990 --> 00:06:12,990 codificar as palavras-chave aqui para que vocês Pode ver, pelo menos, a formatação 107 00:06:12,990 --> 00:06:17,650 semelhanças entre a função declarações e declarações de método. 108 00:06:17,650 --> 00:06:21,990 Então, você começa com, você sabe, um retorno tipo - neste caso, é uma matriz ou 109 00:06:21,990 --> 00:06:23,910 um ponteiro NSArray - 110 00:06:23,910 --> 00:06:26,710 e então você tem esse método. 111 00:06:26,710 --> 00:06:30,900 E então, o que é interessante aqui é que, em vez de ter parênteses, nós 112 00:06:30,900 --> 00:06:32,900 tem esses dois pontos. 113 00:06:32,900 --> 00:06:38,450 E então, na frente de nossos argumentos, nós colocar, de novo, entre parênteses o tipo 114 00:06:38,450 --> 00:06:39,370 de nosso argumento. 115 00:06:39,370 --> 00:06:43,160 >> Então, agora eu estou tentando fazer o comparação entre, você sabe, e n 116 00:06:43,160 --> 00:06:45,450 número, porque eles são ambos inteiros semelhantes. 117 00:06:45,450 --> 00:06:49,580 E então, o outro é um tipo NSUInteger. 118 00:06:49,580 --> 00:06:56,390 E então, com Objective-C, quando você quero ter vários argumentos em 119 00:06:56,390 --> 00:07:00,030 sua cláusula método, você, de alguma forma, separá-los mais ou menos como este - 120 00:07:00,030 --> 00:07:03,790 Eu não tenho certeza de como descrevê-lo, mas este é um bom exemplo de como você 121 00:07:03,790 --> 00:07:06,530 pode ter vários argumentos lá. 122 00:07:06,530 --> 00:07:10,360 >> Você pode, é claro, apenas totalmente ignorar o cólon andArray NSArray 123 00:07:10,360 --> 00:07:13,240 disposição se você quiser apenas um método que leva em um argumento. 124 00:07:13,240 --> 00:07:13,677 Sim, pergunta. 125 00:07:13,677 --> 00:07:18,701 >> AUDIÊNCIA: São ambos NSUInteger e NSArray argumentos que podem ser tomadas em 126 00:07:18,701 --> 00:07:21,530 dentro do NSArray? 127 00:07:21,530 --> 00:07:22,060 >> RHED SHI: sim. 128 00:07:22,060 --> 00:07:23,400 Então, deixe-me explicar. 129 00:07:23,400 --> 00:07:23,790 Então, sim. 130 00:07:23,790 --> 00:07:30,260 Assim, a pergunta era se NSUInteger e NSArray * tipos dos argumentos, 131 00:07:30,260 --> 00:07:31,570 e isso é correto. 132 00:07:31,570 --> 00:07:35,700 Assim, você sempre quer especificar o que o tipo do seu argumento é. 133 00:07:35,700 --> 00:07:41,570 E aqui, eu estou tentando apresentá-lo a algumas das sintaxe e vocabulário de 134 00:07:41,570 --> 00:07:45,910 Objective-C, de modo que esses são tipos reais que você estará lidando. 135 00:07:45,910 --> 00:07:48,970 >> E como você vai notar, matrizes já não são, de certa forma, 136 00:07:48,970 --> 00:07:50,780 coisas do suporte simples. 137 00:07:50,780 --> 00:07:52,060 Eles são objetos. 138 00:07:52,060 --> 00:07:56,700 Embora, se formos para a próxima slide, podemos ver o que pudermos 139 00:07:56,700 --> 00:08:02,510 codificar um NSArray em Objective-C com simplesmente um símbolo na frente de 140 00:08:02,510 --> 00:08:04,190 os colchetes. 141 00:08:04,190 --> 00:08:08,650 Eu não sou, na verdade, a certeza se Eu sintaticamente codificado uma matriz 142 00:08:08,650 --> 00:08:16,020 corretamente para a versão C, mas isso é deveria estar em uma matriz C. 143 00:08:16,020 --> 00:08:19,760 >> Então, isso é como você, você sabe, talvez usar as funções ou o 144 00:08:19,760 --> 00:08:21,990 métodos que criamos anteriormente. 145 00:08:21,990 --> 00:08:22,250 Certo? 146 00:08:22,250 --> 00:08:25,340 Então, este é o lugar onde nós declaramos nosso função e o nosso método. 147 00:08:25,340 --> 00:08:28,020 E agora queremos usá-los em o nosso programa, e este é 148 00:08:28,020 --> 00:08:29,450 como poderíamos fazê-lo. 149 00:08:29,450 --> 00:08:32,400 Assim, em C, você teria que, você sabe, talvez, um bool b, e você configurá-lo para 150 00:08:32,400 --> 00:08:36,549 igual a função, e depois você passa nos argumentos. 151 00:08:36,549 --> 00:08:39,190 >> Em Objective-C, que é muito quase a mesma coisa. 152 00:08:39,190 --> 00:08:43,370 Você tem NSArray * my_array, e é vai ser igual - agora, a única 153 00:08:43,370 --> 00:08:47,460 diferença aqui é essa coisa de objeto, que eu já destacada em amarelo, e 154 00:08:47,460 --> 00:08:51,180 como você pode ver, em C, não há nenhuma outra palavra amarelo. 155 00:08:51,180 --> 00:08:54,170 E é porque os métodos pertencem com um certo objeto. 156 00:08:54,170 --> 00:08:59,800 Então é por isso que eu preciso ter um objeto que, de alguma forma, chama esse método em 157 00:08:59,800 --> 00:09:04,360 o número zero, e em seguida, NSArray a, b, c, d. 158 00:09:04,360 --> 00:09:05,350 Qualquer dúvida sobre isso? 159 00:09:05,350 --> 00:09:12,190 >> Vamos ver esses conceitos em ação logo quando entramos em uma demo. 160 00:09:12,190 --> 00:09:13,400 OK. 161 00:09:13,400 --> 00:09:17,170 Agora, eu quero falar um pouco brevemente sobre Xcode 5, que é o 162 00:09:17,170 --> 00:09:21,160 ambiente de desenvolvimento integrado que você estará trabalhando. 163 00:09:21,160 --> 00:09:26,160 Eu sei que muitos de vocês, ou alguns de vocês, não têm Macs, que é um problema 164 00:09:26,160 --> 00:09:30,490 Xcode porque não está disponível para Windows e PC. 165 00:09:30,490 --> 00:09:32,785 Não me pergunte por que, mas provavelmente - 166 00:09:32,785 --> 00:09:33,730 sim, corporativo. 167 00:09:33,730 --> 00:09:35,290 Tanto faz. 168 00:09:35,290 --> 00:09:39,360 Mas de qualquer maneira, por isso, peço desculpas se alguns dos você tem que baixar algum tipo de 169 00:09:39,360 --> 00:09:43,000 máquina virtual para Mac em Para executar o Xcode 5. 170 00:09:43,000 --> 00:09:46,460 Mas é um muito bacana software para uso. 171 00:09:46,460 --> 00:09:51,280 >> E assim, antes de mergulhar em qualquer tipo de demonstração, eu só quero te mostrar uma 172 00:09:51,280 --> 00:09:55,700 imagem do que Xcode parece em sua janela e também falar sobre 173 00:09:55,700 --> 00:09:57,670 o que esse espaço todo é. 174 00:09:57,670 --> 00:10:01,600 Então, é mais ou menos como aprender a usar o Microsoft Word, exceto que você quer 175 00:10:01,600 --> 00:10:04,675 se familiarizar com toda a coisas diferentes que 176 00:10:04,675 --> 00:10:06,250 estão acontecendo aqui. 177 00:10:06,250 --> 00:10:11,160 >> Então, primeiro, eu quero que você aponte para a barra de ferramentas na parte superior. 178 00:10:11,160 --> 00:10:14,450 Você verá que, no topo, você vai ter o nome do arquivo - 179 00:10:14,450 --> 00:10:18,100 ou, na verdade, o nome do projeto e, em seguida, o nome do arquivo. 180 00:10:18,100 --> 00:10:20,940 Tome nota do jogo e os botões de paragem. 181 00:10:20,940 --> 00:10:24,210 Esses são os que você vai ser usando para executar o aplicativo no 182 00:10:24,210 --> 00:10:25,600 simulador - 183 00:10:25,600 --> 00:10:26,550 o simulador iOS. 184 00:10:26,550 --> 00:10:29,940 Isto vem automaticamente com o Xcode 5, assim você não precisa se preocupar com 185 00:10:29,940 --> 00:10:32,070 download de algum tipo de simulador. 186 00:10:32,070 --> 00:10:34,700 Você só aperta o play e em seguida, ele executa o seu aplicativo. 187 00:10:34,700 --> 00:10:39,230 E você pode brincar com você, e você vai ver como ele funciona mais tarde. 188 00:10:39,230 --> 00:10:42,690 >> E então, no centro, é claro, é onde todo o seu código bonito é 189 00:10:42,690 --> 00:10:44,240 indo. 190 00:10:44,240 --> 00:10:48,340 E então, no lado da mão esquerda, você tem isso, de alguma forma, pasta - 191 00:10:48,340 --> 00:10:50,340 navegação - 192 00:10:50,340 --> 00:10:53,970 e então, você também verá que, ao longo de com o ícone da pasta, há uma 193 00:10:53,970 --> 00:10:57,680 bando de outros ícones lá que será útil mais tarde. 194 00:10:57,680 --> 00:11:04,710 >> E então, no lado direito é um utilitário área onde você pode trabalhar com 195 00:11:04,710 --> 00:11:09,620 alguns dos objetos e especificar, você sabe, o que a cor deve ser, o que 196 00:11:09,620 --> 00:11:12,040 a fonte do texto deve ser, et cetera. 197 00:11:12,040 --> 00:11:15,890 Apesar de tudo o que você faz na área de utilidade, você pode 198 00:11:15,890 --> 00:11:17,480 fazer em código também. 199 00:11:17,480 --> 00:11:21,630 E assim, eu vou estar passando por dois exemplos de como usar, simplesmente, nenhum código de 200 00:11:21,630 --> 00:11:23,730 todos - ou código muito mínima - 201 00:11:23,730 --> 00:11:28,290 versos todo o código, apenas para que vocês saber o que você pode e não pode fazer em 202 00:11:28,290 --> 00:11:29,260 Xcode e Objective-C. 203 00:11:29,260 --> 00:11:32,770 >> E então, finalmente, para baixo, na parte inferior, você tem a área de depuração. 204 00:11:32,770 --> 00:11:37,270 Assim, você não precisa mais correr GDB, et cetera, em seus programas. 205 00:11:37,270 --> 00:11:39,180 Ele faz isso automaticamente para você. 206 00:11:39,180 --> 00:11:42,880 E você também pode imprimir material para esta área. 207 00:11:42,880 --> 00:11:46,790 Então, na verdade, mais tarde, nós vamos passar por mario.c, se vocês ainda se lembram 208 00:11:46,790 --> 00:11:49,000 que, no Xcode. 209 00:11:49,000 --> 00:11:50,360 Então isso deve ser divertido. 210 00:11:50,360 --> 00:11:55,870 >> E, em seguida, apenas para trazê-lo de volta para Objective-C, eu quero destacar o que 211 00:11:55,870 --> 00:11:57,440 você pode fazer com se declarações. 212 00:11:57,440 --> 00:12:03,160 Então, você sabe, porque Objective-C é um super conjunto de C, tudo que você faz é, 213 00:12:03,160 --> 00:12:06,890 literalmente, o mesmo que C. Você só tem pequenas diferenças. 214 00:12:06,890 --> 00:12:10,810 Então, você vai notar a forma de um se afirmação ainda é o mesmo - você tem 215 00:12:10,810 --> 00:12:14,280 se, e então você tem parênteses com uma condição dentro de, ela e, em seguida, 216 00:12:14,280 --> 00:12:17,150 chaves para tudo o que você quer fazer lá dentro. 217 00:12:17,150 --> 00:12:21,680 >> No entanto, eu queria colocar este slide-up aqui, simplesmente para ilustrar que, 218 00:12:21,680 --> 00:12:25,680 porque estamos lidando com objetos, agora, vamos ter que usar essas coisas 219 00:12:25,680 --> 00:12:31,240 chamado assim, é igual a string, que é, por acaso, um método de um 220 00:12:31,240 --> 00:12:33,710 string ou um objeto NSString. 221 00:12:33,710 --> 00:12:38,600 Assim, palavras, neste caso, é um NSString objeto, e ele tem um método chamado é 222 00:12:38,600 --> 00:12:44,150 igual a corda, e então nós estamos passando em uma string codificada para ver 223 00:12:44,150 --> 00:12:48,110 se estas forem iguais uma à outra. 224 00:12:48,110 --> 00:12:51,580 >> Todas as perguntas até agora? 225 00:12:51,580 --> 00:12:52,440 OK. 226 00:12:52,440 --> 00:12:56,190 E, eu quero ir mais uma instrução também. 227 00:12:56,190 --> 00:13:01,420 >> Assim, por exemplo, se quiséssemos fazer um loop ao longo do comprimento de uma string em C, este 228 00:13:01,420 --> 00:13:03,710 deve ser familiar para você. 229 00:13:03,710 --> 00:13:07,840 E, em Objective-C, eu quero para destacar isso, de alguma forma, 230 00:13:07,840 --> 00:13:09,235 método chamado contagem. 231 00:13:09,235 --> 00:13:13,260 232 00:13:13,260 --> 00:13:15,550 Bem, na verdade, deixe-me basta ter isso de volta. 233 00:13:15,550 --> 00:13:17,200 Contagem é um método de matriz. 234 00:13:17,200 --> 00:13:21,070 No entanto, é mais especificamente um propriedade da matriz, que é porque você 235 00:13:21,070 --> 00:13:22,380 pode usar a notação de ponto. 236 00:13:22,380 --> 00:13:25,870 Mas eu não quero entrar muito de este material conceitual, eu só quero 237 00:13:25,870 --> 00:13:30,140 mostrar-lhe como as coisas pareceriam como em Objective-C contra C. 238 00:13:30,140 --> 00:13:35,400 >> E também, eu quero ressaltar que mesmo que eu tenho usado NSUInteger 239 00:13:35,400 --> 00:13:39,860 na frente de todos os meus eus em Objective-C, você também pode usar int, porque é int 240 00:13:39,860 --> 00:13:42,290 totalmente válida em Objective-C, também. 241 00:13:42,290 --> 00:13:42,475 Sim? 242 00:13:42,475 --> 00:13:44,350 >> AUDIÊNCIA: É apenas estilístico, ou seja - 243 00:13:44,350 --> 00:13:44,760 >> RHED SHI: Yeah. 244 00:13:44,760 --> 00:13:46,060 Então, como você vai ver - 245 00:13:46,060 --> 00:13:49,390 por isso, a questão é que foi apenas uma questão de estilo. 246 00:13:49,390 --> 00:13:54,820 Como você vai ver, eu tenho um, mais ou menos, estrela coisa asterisco, na parte inferior, e 247 00:13:54,820 --> 00:13:59,870 esse link leva você a um estouro de pilha formar, em que alguém explica 248 00:13:59,870 --> 00:14:03,640 a diferença entre um int em NSInteger e um NSUInteger. 249 00:14:03,640 --> 00:14:05,540 E assim, você pode ler sobre isso mais tarde. 250 00:14:05,540 --> 00:14:07,640 Estas corrediças vão ser, é claro, disponíveis para você. 251 00:14:07,640 --> 00:14:10,300 252 00:14:10,300 --> 00:14:11,280 >> Vamos ver. 253 00:14:11,280 --> 00:14:12,150 OK, impressionante. 254 00:14:12,150 --> 00:14:15,410 Assim, este também é incluído na corrediça porque eu achava que isso era uma grande 255 00:14:15,410 --> 00:14:19,370 site que apresenta a sintaxe Objective-C. 256 00:14:19,370 --> 00:14:24,410 Então, na verdade, por que não vamos passar para Chrome e confira este site? 257 00:14:24,410 --> 00:14:30,650 258 00:14:30,650 --> 00:14:31,300 >> Certo. 259 00:14:31,300 --> 00:14:36,670 Então, o que eu quero mostrar-lhe caras aqui é esta imagem. 260 00:14:36,670 --> 00:14:41,630 Então, isso é, de certa forma, vai ser o que você vai ver o interior de qualquer 261 00:14:41,630 --> 00:14:42,890 Arquivo Xcode. 262 00:14:42,890 --> 00:14:47,400 263 00:14:47,400 --> 00:14:51,430 Na verdade, por que não basta ter um momento para, de alguma forma, levar isso dentro 264 00:14:51,430 --> 00:14:53,470 >> Assim, este livro - 265 00:14:53,470 --> 00:14:55,880 que é o objeto que estamos lidando. 266 00:14:55,880 --> 00:14:59,680 E então, é, obviamente, vai ser herdado de algum outro objeto, mas 267 00:14:59,680 --> 00:15:01,810 você não precisa se preocupar com isso. 268 00:15:01,810 --> 00:15:04,430 E, em seguida,, é, talvez, tem algumas variáveis ​​membro. 269 00:15:04,430 --> 00:15:09,160 >> A coisa importante que eu quero mostrar-lhe são os métodos de instância, aqui. 270 00:15:09,160 --> 00:15:12,670 Assim, os métodos de instância são indicados por este sinal de menos. 271 00:15:12,670 --> 00:15:15,550 E então, como você vai perceber, estamos já começando a ver o paradigma 272 00:15:15,550 --> 00:15:17,670 para declaração de método, certo? 273 00:15:17,670 --> 00:15:22,670 O tipo de retorno, o nome do método, e em seguida, o tipo do argumento, e 274 00:15:22,670 --> 00:15:24,660 em seguida, o nome do argumento. 275 00:15:24,660 --> 00:15:29,090 E este sinal negativo significa que é um método de exemplo, o que significa que 276 00:15:29,090 --> 00:15:32,270 estes métodos só estão disponíveis para objetos que foram instanciados. 277 00:15:32,270 --> 00:15:35,050 278 00:15:35,050 --> 00:15:39,100 >> Para contrastar, que métodos com um plus assinar na frente deles são de classe 279 00:15:39,100 --> 00:15:43,640 métodos, o que significa que você pode chamar estes métodos, mesmo se você não tem 280 00:15:43,640 --> 00:15:45,970 um objeto criado ainda. 281 00:15:45,970 --> 00:15:51,600 Assim, para um exemplo claro, NSString é uma classe. 282 00:15:51,600 --> 00:15:55,850 E você pode chamar, por exemplo, métodos de classe NSString - 283 00:15:55,850 --> 00:15:58,660 o real, como, palavra NSString. 284 00:15:58,660 --> 00:16:02,050 >> No entanto, a fim de utilizar estes métodos, você realmente 285 00:16:02,050 --> 00:16:03,460 precisa criar uma string. 286 00:16:03,460 --> 00:16:08,980 Por exemplo, NSString corda estrela é igual a em aspa, Olá mundo. 287 00:16:08,980 --> 00:16:10,910 E então, você pode usar esses métodos - 288 00:16:10,910 --> 00:16:11,990 métodos de instância - 289 00:16:11,990 --> 00:16:14,790 sobre essa seqüência Olá mundo. 290 00:16:14,790 --> 00:16:17,825 Então, essa é a diferença entre métodos de instância e métodos de classe. 291 00:16:17,825 --> 00:16:20,390 292 00:16:20,390 --> 00:16:21,930 >> E, nós coberto apenas esta parte. 293 00:16:21,930 --> 00:16:25,300 294 00:16:25,300 --> 00:16:33,750 Propriedades são outra coisa que são dentro de objetos, basicamente. 295 00:16:33,750 --> 00:16:37,530 E você declará-los com a palavra-chave na propriedade. 296 00:16:37,530 --> 00:16:39,940 Você tem estas opções, aqui, que eu vou explicar mais tarde, quando 297 00:16:39,940 --> 00:16:43,110 vamos para uma demo. 298 00:16:43,110 --> 00:16:43,660 Sim? 299 00:16:43,660 --> 00:16:43,950 Oi. 300 00:16:43,950 --> 00:16:45,440 >> AUDIÊNCIA: Você poderia aumentar o zoom, por favor? 301 00:16:45,440 --> 00:16:46,130 >> RHED SHI: Ah, sim. 302 00:16:46,130 --> 00:16:46,560 Desculpe. 303 00:16:46,560 --> 00:16:49,140 >> AUDIÊNCIA: Obrigado. 304 00:16:49,140 --> 00:16:50,005 >> RHED SHI: Isso deve ser muito melhor. 305 00:16:50,005 --> 00:16:51,240 >> AUDIÊNCIA: Yeah. 306 00:16:51,240 --> 00:16:53,940 Obrigado. 307 00:16:53,940 --> 00:16:56,815 >> RHED SHI: Sim, por favor, lembre-me se Eu esqueço para ampliar ou diminuir o zoom. 308 00:16:56,815 --> 00:17:00,590 309 00:17:00,590 --> 00:17:03,570 Então, isso é tudo que eu queria para mostrar-lhe para - 310 00:17:03,570 --> 00:17:05,970 Uau, isso é muito - 311 00:17:05,970 --> 00:17:06,790 para este site. 312 00:17:06,790 --> 00:17:12,210 Então, vamos voltar aos nossos slides. 313 00:17:12,210 --> 00:17:17,819 >> Na verdade, agora vamos dar um momento para mergulhar em uma demo. 314 00:17:17,819 --> 00:17:25,490 Então, vamos começar com uma novo projeto Xcode. 315 00:17:25,490 --> 00:17:33,040 Então, se você vai abrir o Xcode em todos suas máquinas, deve levar algum 316 00:17:33,040 --> 00:17:36,720 página onde diz, como, seja aberto se um projeto existente ou um novo 317 00:17:36,720 --> 00:17:39,230 projeto, e você deve clicar em um novo projeto. 318 00:17:39,230 --> 00:17:41,477 E então, deve tomar a esta tela. 319 00:17:41,477 --> 00:17:41,593 Sim? 320 00:17:41,593 --> 00:17:44,279 >> AUDIÊNCIA: Se não tem um Mac, nós apenas uma espécie de relaxar? 321 00:17:44,279 --> 00:17:46,870 >> RHED SHI: Ou olhar em com alguém, sim. 322 00:17:46,870 --> 00:17:47,740 É. 323 00:17:47,740 --> 00:17:50,660 Você pode relaxar também. 324 00:17:50,660 --> 00:17:51,570 OK. 325 00:17:51,570 --> 00:17:55,410 >> Então, o que vamos fazer primeiro, agora, é, na verdade, nós vamos fazer um 326 00:17:55,410 --> 00:17:56,600 aplicação única visão. 327 00:17:56,600 --> 00:18:01,340 Então, se você observar, o que é ótimo sobre Xcode e suporte da Apple para 328 00:18:01,340 --> 00:18:05,690 desenvolvedores é que você tem um monte de templates para trabalhar já. 329 00:18:05,690 --> 00:18:09,210 Você poderia, por exemplo, fazer uma aplicação mestre-detalhe. 330 00:18:09,210 --> 00:18:10,920 Você pode fazer um jogo - 331 00:18:10,920 --> 00:18:13,860 e na verdade, eu não vou entrar em jogos, porque os jogos são uma história diferente 332 00:18:13,860 --> 00:18:15,320 para o desenvolvimento do iOS. 333 00:18:15,320 --> 00:18:18,930 E eles estão tipo de separar, por isso não vou entrar nessa. 334 00:18:18,930 --> 00:18:22,580 >> Então, você tem baseado em página aplicações. 335 00:18:22,580 --> 00:18:24,010 Você tem um aplicativo de guia - 336 00:18:24,010 --> 00:18:29,350 assim como, por exemplo, o Bank of America provavelmente tem, assim, um aplicativo com guias. 337 00:18:29,350 --> 00:18:32,140 É aqueles onde você tem os botões na parte inferior. 338 00:18:32,140 --> 00:18:34,750 E então, você tem um jogo Kit Sprite. 339 00:18:34,750 --> 00:18:38,670 >> Ou você pode trabalhar a partir do zero, o que é o que vamos fazer depois. 340 00:18:38,670 --> 00:18:42,470 Mas vamos, em primeiro lugar, começar com uma única aplicação vista. 341 00:18:42,470 --> 00:18:48,590 Então, ele vai pedir um nome de produto, e nós podemos apenas fazer teste. 342 00:18:48,590 --> 00:18:50,190 Nome da organização - 343 00:18:50,190 --> 00:18:54,140 assim, o nome da organização, identificador de empresa - 344 00:18:54,140 --> 00:18:58,100 aqueles são importantes se você está indo para colocar seu aplicativo na App Store. 345 00:18:58,100 --> 00:19:01,110 346 00:19:01,110 --> 00:19:05,116 Fora isso, seu código vai correr absolutamente bem sem isso. 347 00:19:05,116 --> 00:19:09,940 >> Isso vai ser importante se você quiser - assim, por si só, como, coloque o seu aplicativo 348 00:19:09,940 --> 00:19:14,080 para o seu telefone ou algo assim, e teste com isso, você sabe, na vida real - 349 00:19:14,080 --> 00:19:15,360 este vai ser importante. 350 00:19:15,360 --> 00:19:20,110 Isto tende a ser normalmente associada com algum tipo de conta de desenvolvedor 351 00:19:20,110 --> 00:19:20,970 com a Apple. 352 00:19:20,970 --> 00:19:24,740 >> E assim, eu sei, provavelmente, muitos de vocês não terá quaisquer contas de desenvolvedores. 353 00:19:24,740 --> 00:19:26,460 Eu sei que a universidade tem um. 354 00:19:26,460 --> 00:19:27,630 Eu acho que CS tem um. 355 00:19:27,630 --> 00:19:32,770 Mas, você pode me enviar e-mail e eu vou tentar para descobrir isso para você. 356 00:19:32,770 --> 00:19:38,210 Mas agora, eu acabei de colocar em algumas coisas aqui de espaço reservado. 357 00:19:38,210 --> 00:19:41,250 >> E você pode, é claro, aqui, escolha se você quer que ele seja o único em 358 00:19:41,250 --> 00:19:44,410 iPhone, no iPad, ou ambos - 359 00:19:44,410 --> 00:19:46,630 aplicação universal. 360 00:19:46,630 --> 00:19:56,170 Assim, por agora, vamos fazer universal, apenas ver ambos os lados da plataforma. 361 00:19:56,170 --> 00:19:57,120 >> Vamos ver. 362 00:19:57,120 --> 00:20:01,510 Então, agora, eu vou salvar -lo em algum tipo de pasta. 363 00:20:01,510 --> 00:20:04,500 Não importa onde - você sempre pode movê-la mais tarde. 364 00:20:04,500 --> 00:20:09,380 E, agora, somos levados ao nosso projeto Xcode. 365 00:20:09,380 --> 00:20:12,890 Eu não me preocuparia com tudo isso. 366 00:20:12,890 --> 00:20:17,510 Sugiro não tocar em qualquer isso, a menos que você saiba exatamente o que 367 00:20:17,510 --> 00:20:18,260 você está fazendo. 368 00:20:18,260 --> 00:20:21,750 Então, tudo isso, apenas ignore na sua maior parte. 369 00:20:21,750 --> 00:20:26,940 Você não vai precisar de tocá-lo, e se você você estragar algumas coisas aqui, 370 00:20:26,940 --> 00:20:28,600 fica um pouco complicado. 371 00:20:28,600 --> 00:20:32,480 >> Então, por que não olhar para os arquivos no 372 00:20:32,480 --> 00:20:34,700 lado esquerdo em nosso navegador. 373 00:20:34,700 --> 00:20:37,060 Aqui, temos AppDelegate.h. 374 00:20:37,060 --> 00:20:43,430 Temos AppDelegate.m Então, como você vai aviso prévio, temos arquivos de cabeçalho, que 375 00:20:43,430 --> 00:20:45,720 terminar em ponto h, e nós temos implementação - 376 00:20:45,720 --> 00:20:46,970 Na verdade, deixe-me zoom in 377 00:20:46,970 --> 00:20:56,270 378 00:20:56,270 --> 00:20:57,060 OK. 379 00:20:57,060 --> 00:20:59,940 Deixe-me zoom in 380 00:20:59,940 --> 00:21:05,810 >> Certo, então você tem arquivos de cabeçalho e você tem arquivos de implementação. 381 00:21:05,810 --> 00:21:07,060 Na verdade - 382 00:21:07,060 --> 00:21:08,680 383 00:21:08,680 --> 00:21:09,240 OK. 384 00:21:09,240 --> 00:21:11,800 Isto é um pouco estranho, mas pense comigo. 385 00:21:11,800 --> 00:21:16,140 Então, porque nós escolhemos uma única visão aplicação, nós vamos ser 386 00:21:16,140 --> 00:21:17,340 trabalhar com storyboard. 387 00:21:17,340 --> 00:21:22,140 >> Então, storyboard é algo que a Apple surgiu com a realmente ajudar 388 00:21:22,140 --> 00:21:26,550 desenvolvedores rapidamente protótipo suas aplicações. 389 00:21:26,550 --> 00:21:29,410 Então, este é o lugar onde você pode criar um aplicativo sem escrever uma 390 00:21:29,410 --> 00:21:31,710 única linha de código. 391 00:21:31,710 --> 00:21:35,390 No entanto, em nossa aplicação único ponto de vista, nós, é claro, tem um 392 00:21:35,390 --> 00:21:41,270 arquivo para o nosso ponto de vista, o que é um controlador de ponto de vista. 393 00:21:41,270 --> 00:21:45,150 Então, nós temos o cabeçalho eo arquivo de implementação, aqui. 394 00:21:45,150 --> 00:21:52,350 >> E, eu estou indo para afastar agora porque vamos precisar para trabalhar no storyboard. 395 00:21:52,350 --> 00:21:55,190 Então, aqui está o nosso ponto de vista. 396 00:21:55,190 --> 00:22:00,120 Se nós, simplesmente, executar o aplicativo agora, não há muito emocionante acontecendo. 397 00:22:00,120 --> 00:22:03,270 398 00:22:03,270 --> 00:22:05,040 Assim, você verá esta tela branca. 399 00:22:05,040 --> 00:22:06,110 OK? 400 00:22:06,110 --> 00:22:14,010 >> E, em nossa área de utilidades, podemos adicionar um monte de coisas diferentes para ele. 401 00:22:14,010 --> 00:22:19,290 Então, quando você está lidando com telas em iOS, controladores de vista são o 402 00:22:19,290 --> 00:22:23,150 objetos que encapsulam, de alguma forma, os seus pontos de vista. 403 00:22:23,150 --> 00:22:26,980 Assim, um controlador de vista sempre tem uma propriedade chamada vista. 404 00:22:26,980 --> 00:22:29,610 E esse ponto de vista, normalmente, contém, você sabe, o que você 405 00:22:29,610 --> 00:22:30,810 quero ver em uma tela. 406 00:22:30,810 --> 00:22:39,210 >> Então, bem, vamos começar por colocar, talvez, talvez um marcador. 407 00:22:39,210 --> 00:22:41,450 Então, vamos colocar um rótulo em lá - 408 00:22:41,450 --> 00:22:44,080 colocá-lo no meio. 409 00:22:44,080 --> 00:22:49,560 Então, agora que eu cliquei no rótulo, eu pode ir para o inspetor de propriedades 410 00:22:49,560 --> 00:22:51,510 e começar a mudar o seu valor. 411 00:22:51,510 --> 00:22:55,040 Vamos chamá-lo CS50 Colours. 412 00:22:55,040 --> 00:22:58,220 >> E, eu também pode alterar o tipo de letra. 413 00:22:58,220 --> 00:23:02,630 Assim, em vez de fazer sistema, que é o padrão, podemos fazer um personalizado. 414 00:23:02,630 --> 00:23:03,770 Nós podemos mudar - 415 00:23:03,770 --> 00:23:06,453 você sabe, ultraleve, torná-lo 32. 416 00:23:06,453 --> 00:23:09,000 417 00:23:09,000 --> 00:23:11,370 E então, nós podemos fazer a nossa caixa maior. 418 00:23:11,370 --> 00:23:14,410 >> AUDIÊNCIA: Você acha que você pode ampliar em apenas um pouco mais, talvez? 419 00:23:14,410 --> 00:23:14,810 >> RHED SHI: Sim? 420 00:23:14,810 --> 00:23:16,196 OK. 421 00:23:16,196 --> 00:23:17,450 >> AUDIÊNCIA: Basta tocar isso? 422 00:23:17,450 --> 00:23:19,020 >> RHED SHI: Vamos ver. 423 00:23:19,020 --> 00:23:20,382 Será que isso funciona? 424 00:23:20,382 --> 00:23:22,270 >> AUDIÊNCIA: Basta passar o Xcode? 425 00:23:22,270 --> 00:23:23,520 >> RHED SHI: Claro. 426 00:23:23,520 --> 00:23:25,620 427 00:23:25,620 --> 00:23:25,940 OK. 428 00:23:25,940 --> 00:23:26,275 Incrível. 429 00:23:26,275 --> 00:23:27,072 >> AUDIÊNCIA: A etiqueta abaixo? 430 00:23:27,072 --> 00:23:28,920 O rótulo? 431 00:23:28,920 --> 00:23:29,480 >> RHED SHI: O que é isso? 432 00:23:29,480 --> 00:23:32,050 >> AUDIÊNCIA: O drop-down foi o rótulo abaixo? 433 00:23:32,050 --> 00:23:35,170 >> RHED SHI: Então, a pergunta era, o que drop-down foi o rótulo abaixo? 434 00:23:35,170 --> 00:23:37,260 Deve-se, simplesmente, estar aqui em baixo. 435 00:23:37,260 --> 00:23:39,330 Eu acho que é uma coisa cubo. 436 00:23:39,330 --> 00:23:40,910 Mas, geralmente, esse é o padrão - 437 00:23:40,910 --> 00:23:43,250 Eu só vou aqui até eu encontrar um rótulo. 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 >> Então, agora, temos a nossa etiqueta. 441 00:23:48,950 --> 00:23:51,040 Vamos centrar-lo. 442 00:23:51,040 --> 00:23:56,410 E Xcode nos dá diretrizes para centrar objetos. 443 00:23:56,410 --> 00:23:59,510 444 00:23:59,510 --> 00:24:01,480 Então, agora vamos executar o nosso código novamente. 445 00:24:01,480 --> 00:24:08,110 446 00:24:08,110 --> 00:24:08,800 >> Lá vamos nós. 447 00:24:08,800 --> 00:24:10,310 Então, nós temos CS50 Colours. 448 00:24:10,310 --> 00:24:13,720 449 00:24:13,720 --> 00:24:15,420 E agora, vamos colocar um botão lá, certo? 450 00:24:15,420 --> 00:24:17,480 Porque queremos fazer este interativo. 451 00:24:17,480 --> 00:24:19,410 Então, vamos colocar um botão aqui. 452 00:24:19,410 --> 00:24:39,020 E nós vamos chamar este botão "tap aqui para continuar. "Vamos centralizá-lo, também 453 00:24:39,020 --> 00:24:39,990 Na verdade, ele já está centrado. 454 00:24:39,990 --> 00:24:40,630 É. 455 00:24:40,630 --> 00:24:43,130 >> Então, agora temos um botão. 456 00:24:43,130 --> 00:24:53,000 E se correr novamente, nós vamos ter um pequeno botão agradável aqui. 457 00:24:53,000 --> 00:24:56,520 E eu posso clicar nele, mas ele não faz nada, porque não temos feito 458 00:24:56,520 --> 00:24:58,500 nada com o botão ainda. 459 00:24:58,500 --> 00:25:01,740 >> Então, vamos criar um outro ponto de vista, certo? 460 00:25:01,740 --> 00:25:04,160 Então, vamos dizer que eu quero tocar esse botão e eu quero 461 00:25:04,160 --> 00:25:05,730 ir para outra página - 462 00:25:05,730 --> 00:25:06,820 outro ponto de vista. 463 00:25:06,820 --> 00:25:14,440 O que eu vou fazer é, posso criar um controlador de vista, certo? 464 00:25:14,440 --> 00:25:19,690 Agora eu vou clicar no meu botão, e então, o importante é que eu vou 465 00:25:19,690 --> 00:25:20,910 clique - ou - 466 00:25:20,910 --> 00:25:23,660 sim, controle de imprensa no meu teclado. 467 00:25:23,660 --> 00:25:24,880 Controle. 468 00:25:24,880 --> 00:25:27,005 Clique no botão e arraste. 469 00:25:27,005 --> 00:25:29,960 470 00:25:29,960 --> 00:25:33,550 >> Então, lembre-se de segurar a tecla de controle. 471 00:25:33,550 --> 00:25:35,160 Vamos fazer isso de novo. 472 00:25:35,160 --> 00:25:40,930 Então, segure o controle, clique e arraste para o que você quer fazer. 473 00:25:40,930 --> 00:25:41,520 OK. 474 00:25:41,520 --> 00:25:43,610 >> E agora, eu tenho várias opções aqui. 475 00:25:43,610 --> 00:25:47,900 I pode empurrar, ou eu posso fazer um modal, ou eu posso fazer um costume. 476 00:25:47,900 --> 00:25:50,900 Push é somente se você tiver uma controlador de navegação. 477 00:25:50,900 --> 00:25:54,270 Neste momento, a nossa primeira vista controlador não está dentro de qualquer 478 00:25:54,270 --> 00:25:55,610 controlador de navegação. 479 00:25:55,610 --> 00:25:59,500 Assim, o controlador de navegação é o que lhe dá o botão Voltar do 480 00:25:59,500 --> 00:26:03,910 o app iOS onde você tem, você sabe, que top, tipo, bar de espessura - 481 00:26:03,910 --> 00:26:06,480 onde você pode ir para trás, ou para a frente, et cetera. 482 00:26:06,480 --> 00:26:07,740 Agora, eu não tenho isso. 483 00:26:07,740 --> 00:26:11,050 E assim, é por isso que eu não posso fazer um empurrão. 484 00:26:11,050 --> 00:26:12,480 >> Então, eu cliquei no impulso acidentalmente, aqui. 485 00:26:12,480 --> 00:26:16,480 E, na verdade, vamos executar o código, e deve bater em mim. 486 00:26:16,480 --> 00:26:19,770 487 00:26:19,770 --> 00:26:22,960 Só se eu pressionar o botão porém, assim que - 488 00:26:22,960 --> 00:26:23,420 direita. 489 00:26:23,420 --> 00:26:26,480 Então, isso é ruim. 490 00:26:26,480 --> 00:26:31,330 >> E, como você pode ver, aqui, nós tem a mensagem de erro. 491 00:26:31,330 --> 00:26:35,460 Então, "segues push só pode ser usado quando controlador de fonte é gerenciado por um 492 00:26:35,460 --> 00:26:40,700 instância do controlador de navegação UI ". Assim, porque este não estava dentro de um 493 00:26:40,700 --> 00:26:44,030 controlador de navegação, Eu não poderia fazer isso. 494 00:26:44,030 --> 00:26:48,782 >> Então, agora, eu vou voltar para o pasta, voltando ao storyboard. 495 00:26:48,782 --> 00:26:51,680 >> AUDIÊNCIA: Qual é a navegação controlador, de novo? 496 00:26:51,680 --> 00:26:55,260 >> RHED SHI: Então, agora eu vou te mostrar. 497 00:26:55,260 --> 00:26:56,200 Vamos ver. 498 00:26:56,200 --> 00:27:00,510 Então, eu estou indo para clicar nesta visão controlador, e então eu vou 499 00:27:00,510 --> 00:27:03,920 até o produto - 500 00:27:03,920 --> 00:27:06,240 Na verdade, não, desculpe - editor. 501 00:27:06,240 --> 00:27:08,360 E eu estou indo para ir para - 502 00:27:08,360 --> 00:27:09,350 Na verdade, se eu clicar sobre ele? 503 00:27:09,350 --> 00:27:10,070 Não. 504 00:27:10,070 --> 00:27:11,080 Lá vamos nós. 505 00:27:11,080 --> 00:27:16,270 Vou subir em editor, desça para incorporar, em seguida, navegação 506 00:27:16,270 --> 00:27:17,520 controlador. 507 00:27:17,520 --> 00:27:20,130 508 00:27:20,130 --> 00:27:20,720 >> OK. 509 00:27:20,720 --> 00:27:27,750 E, meu espaço de trabalho parece muito confuso, então vamos limpar isso. 510 00:27:27,750 --> 00:27:29,000 Então, tudo isso é storyboard. 511 00:27:29,000 --> 00:27:32,510 512 00:27:32,510 --> 00:27:33,760 E desta maneira - 513 00:27:33,760 --> 00:27:37,030 514 00:27:37,030 --> 00:27:38,280 OK, pare - 515 00:27:38,280 --> 00:27:49,320 516 00:27:49,320 --> 00:27:50,860 I pode rapidamente construir algo como esta. 517 00:27:50,860 --> 00:27:53,020 E então, agora eu posso voltar, sabe? 518 00:27:53,020 --> 00:27:55,730 >> Mas isso é meio chato, né? 519 00:27:55,730 --> 00:28:03,020 Então, o que eu quero fazer é, eu não quero de fazer, simplesmente, uma visão 520 00:28:03,020 --> 00:28:03,870 controlador. 521 00:28:03,870 --> 00:28:07,720 Digamos que eu queria realmente fazer uma controlador de exibição de tabela, para que eu possa colocar em 522 00:28:07,720 --> 00:28:12,110 algumas cores agradáveis, na tabela. 523 00:28:12,110 --> 00:28:16,210 >> Então, agora que eu coloquei na minha opinião mesa controlador, eu preciso conectá-lo de volta 524 00:28:16,210 --> 00:28:18,560 deste botão para o controlador de vista. 525 00:28:18,560 --> 00:28:21,780 Então, eu preciso fazer o meu controle, clique, arraste coisa novamente. 526 00:28:21,780 --> 00:28:27,318 E agora eu posso fazer pressão, porque eu incorporar lo dentro de um controlador de navegação. 527 00:28:27,318 --> 00:28:32,210 >> AUDIÊNCIA: Navegação controlador apenas permite-lhe ir de um lugar para outro? 528 00:28:32,210 --> 00:28:33,540 >> RHED SHI: sim. 529 00:28:33,540 --> 00:28:38,670 Então, mais tecnicamente, é um objeto onde - 530 00:28:38,670 --> 00:28:43,150 assim, no interior da navegação controlador de objeto, ele 531 00:28:43,150 --> 00:28:44,780 mantém o controle de uma matriz. 532 00:28:44,780 --> 00:28:48,300 E essa matriz contém todas as subsequentes visualizar controladores. 533 00:28:48,300 --> 00:28:51,560 É por isso que quando você pressiona para trás, vai voltar para a página anterior. 534 00:28:51,560 --> 00:28:55,260 Como o controlador de navegação objeto, ou o código que cuida de 535 00:28:55,260 --> 00:28:58,890 este objeto, tem uma matriz que mantém acompanhar desses controladores de visualização, e 536 00:28:58,890 --> 00:29:01,870 pode, então, você sabe, dq a visão controlador e dar-lhe de volta o 537 00:29:01,870 --> 00:29:02,750 anterior. 538 00:29:02,750 --> 00:29:05,200 >> Então, isso é coisa técnica, mas - 539 00:29:05,200 --> 00:29:07,505 e eu vou mostrar-lhe mais tarde, em código, se tivermos tempo. 540 00:29:07,505 --> 00:29:10,270 Eu sou o tipo de esgotar-se em tempo, mas - 541 00:29:10,270 --> 00:29:15,610 >> Assim, com a exibição de tabela, o que podemos fazer é - 542 00:29:15,610 --> 00:29:18,440 Geralmente é definida automaticamente para Prototype dinâmico - 543 00:29:18,440 --> 00:29:20,640 vamos fazê-lo células estáticas, caso contrário, vamos 544 00:29:20,640 --> 00:29:22,920 deparar com alguns problemas. 545 00:29:22,920 --> 00:29:28,470 >> E então, vamos dizer que eu vou para ter uma secção. 546 00:29:28,470 --> 00:29:31,000 Então, é como seções - 547 00:29:31,000 --> 00:29:35,160 se você já viu o aplicativo de música, quando você tem artistas, seções faria 548 00:29:35,160 --> 00:29:37,830 ser o de um meio Z's - 549 00:29:37,830 --> 00:29:38,780 - as letras 550 00:29:38,780 --> 00:29:42,600 e então, você sabe, o indivíduo linhas seriam os nomes dos artistas. 551 00:29:42,600 --> 00:29:47,460 E assim, o que é legal aqui, é que eu posso acessar todos os objetos dentro 552 00:29:47,460 --> 00:29:50,430 do meu storyboard através deste menu suspenso, também. 553 00:29:50,430 --> 00:29:56,600 >> Então, eu estou indo para clicar em minha seção, e eu quero, você sabe, talvez cinco linhas. 554 00:29:56,600 --> 00:30:00,770 E, em seguida, dentro de cada linha, Eu quero colocar um rótulo. 555 00:30:00,770 --> 00:30:04,080 556 00:30:04,080 --> 00:30:06,340 E eu vou chamar este Azul. 557 00:30:06,340 --> 00:30:09,530 558 00:30:09,530 --> 00:30:15,630 E então, eu quero colocar uma visão UI, você sei, talvez por, tipo, uma pequena caixa. 559 00:30:15,630 --> 00:30:23,840 560 00:30:23,840 --> 00:30:28,710 >> Para que eu possa mostrar às pessoas uma pré-visualização da cor. 561 00:30:28,710 --> 00:30:34,150 E eu vou voltar para a propriedade e mudar essa cor para, oh, eu não sei 562 00:30:34,150 --> 00:30:35,510 sabe, um presente. 563 00:30:35,510 --> 00:30:38,630 564 00:30:38,630 --> 00:30:43,150 >> E, em seguida, observe também, aqui, quando eu tenho os acessórios, eu posso ter muitos 565 00:30:43,150 --> 00:30:46,160 dos diferentes acessórios que você costuma ver. 566 00:30:46,160 --> 00:30:55,250 O indicador de divulgação, o detalhe, ou marca de verificação, ou simplesmente detalhes. 567 00:30:55,250 --> 00:30:59,080 Então, talvez possamos fazer, tipo, uma divulgação indicador, por exemplo. 568 00:30:59,080 --> 00:31:03,540 >> E então, por que não podemos ter estes, cópia colá-los e colocá-los no 569 00:31:03,540 --> 00:31:06,740 próxima linha da tabela. 570 00:31:06,740 --> 00:31:08,115 Assim, podemos chamar isso de amarelo. 571 00:31:08,115 --> 00:31:10,620 572 00:31:10,620 --> 00:31:12,155 E eu poderia ter de estender essa. 573 00:31:12,155 --> 00:31:15,730 574 00:31:15,730 --> 00:31:17,290 Vamos torná-lo amarelo. 575 00:31:17,290 --> 00:31:20,610 E, desta forma, podemos copiar cole nosso caminho. 576 00:31:20,610 --> 00:31:24,910 577 00:31:24,910 --> 00:31:25,370 O que foi? 578 00:31:25,370 --> 00:31:26,620 Roxo. 579 00:31:26,620 --> 00:31:30,020 580 00:31:30,020 --> 00:31:34,740 >> Portanto, estes são todos os CS50 típico cores que você já viu em sala de aula - 581 00:31:34,740 --> 00:31:37,160 Na verdade, sinto muito - 582 00:31:37,160 --> 00:31:38,410 ou no site. 583 00:31:38,410 --> 00:31:49,700 584 00:31:49,700 --> 00:31:51,260 Espero que vocês possam ver o que eu estou fazendo aqui. 585 00:31:51,260 --> 00:31:57,270 586 00:31:57,270 --> 00:31:57,890 OK. 587 00:31:57,890 --> 00:31:58,490 Último. 588 00:31:58,490 --> 00:32:02,040 >> AUDIÊNCIA: Como você adicionar a linha inicialmente? 589 00:32:02,040 --> 00:32:04,740 >> RHED SHI: Então, a pergunta era: como eu adicionar a linha inicialmente? 590 00:32:04,740 --> 00:32:07,500 Fui para esta seção da tabela - ou no entanto eu posso 591 00:32:07,500 --> 00:32:09,200 selecione a seção de mesa - 592 00:32:09,200 --> 00:32:11,250 e, então, aqui, eu atualizei o número de linhas. 593 00:32:11,250 --> 00:32:19,920 594 00:32:19,920 --> 00:32:22,505 >> E, deixe-me esperança de que isso funciona. 595 00:32:22,505 --> 00:32:30,620 596 00:32:30,620 --> 00:32:31,480 OK. 597 00:32:31,480 --> 00:32:32,870 Vamos ver se isso funciona. 598 00:32:32,870 --> 00:32:34,000 Oh, perfeito, incrível. 599 00:32:34,000 --> 00:32:35,300 OK. 600 00:32:35,300 --> 00:32:40,330 Enquanto eu estava construindo minha demo, alguns as coisas não estavam alinhados, assim, obrigado por 601 00:32:40,330 --> 00:32:42,510 os aplausos. 602 00:32:42,510 --> 00:32:42,920 >> É. 603 00:32:42,920 --> 00:32:44,770 Então, vamos ver. 604 00:32:44,770 --> 00:32:47,550 Nós vamos fazer isso apenas para fazer nove tudo - ou, na verdade, vamos apenas 605 00:32:47,550 --> 00:32:51,420 transformar tudo isso em divulgação indicadores. 606 00:32:51,420 --> 00:32:55,790 E então, o que eu quero mostrar-lhe, também, Foi assim que eu posso tomar cada um desses 607 00:32:55,790 --> 00:32:59,230 linhas da tabela e tê-los interagir - 608 00:32:59,230 --> 00:33:00,150 oh. 609 00:33:00,150 --> 00:33:01,400 Não. 610 00:33:01,400 --> 00:33:05,700 611 00:33:05,700 --> 00:33:06,030 >> Oh. 612 00:33:06,030 --> 00:33:07,230 Além disso, eu quero mostrar-lhe - 613 00:33:07,230 --> 00:33:13,080 aqui, eu posso colocar o título do meu controlador de navegação, certo? 614 00:33:13,080 --> 00:33:17,090 Então, na verdade, você vai notar, assim que eu incorporado este controlador de vista interior 615 00:33:17,090 --> 00:33:22,010 do controlador de navegação, vemos esta barra de navegação no topo da nossa 616 00:33:22,010 --> 00:33:25,340 representação storyboard de um controlador de ponto de vista. 617 00:33:25,340 --> 00:33:29,270 E assim, isso nos dá, assim, um visual, de alguma forma, orientar a nossa tela visível. 618 00:33:29,270 --> 00:33:34,360 Isto é, obviamente, vai ser a barra de navegação. 619 00:33:34,360 --> 00:33:40,950 >> E o que eu quero fazer de forma rápida, agora, é colocar em outro - 620 00:33:40,950 --> 00:33:45,880 de modo que este controlador de exibição de tabela que eu fiz por tomando uma delas e arrastando-o 621 00:33:45,880 --> 00:33:49,800 aqui, e isso é o que me permitiu rapidamente, realmente, criar uma exibição de tabela 622 00:33:49,800 --> 00:33:50,850 controlador. 623 00:33:50,850 --> 00:33:54,100 Se nós temos o tempo, porém, você vai ver que, por meio de programação, é uma 624 00:33:54,100 --> 00:33:57,660 pouco mais complicado para criar uma tabela vista controlador, porque não 625 00:33:57,660 --> 00:34:02,520 um par de métodos que são necessário para que você possa, de alguma forma, escrever 626 00:34:02,520 --> 00:34:07,130 para fora, para que a vista da tabela controlador para ser exibido corretamente. 627 00:34:07,130 --> 00:34:15,340 >> No entanto, eu só quero te mostrar, agora, um exemplo de onde, se eu tirar isso, 628 00:34:15,340 --> 00:34:15,920 por exemplo - 629 00:34:15,920 --> 00:34:18,290 Eu coloquei em outro controlador de vista. 630 00:34:18,290 --> 00:34:27,320 E agora, vamos dizer que eu quero controlar alt meu primeiro azul 631 00:34:27,320 --> 00:34:28,980 linha da tabela para aqui. 632 00:34:28,980 --> 00:34:31,070 E eu quero chamar isso de azul. 633 00:34:31,070 --> 00:34:32,570 E então - 634 00:34:32,570 --> 00:34:34,159 vamos ver. 635 00:34:34,159 --> 00:34:41,050 Estou com a vista agora, e eu posso mudar o pano de fundo azul. 636 00:34:41,050 --> 00:34:45,945 >> E assim, o aviso prévio, aqui, este drop-down menu também lhe dá uma hierarquia de todos 637 00:34:45,945 --> 00:34:47,040 desses objetos. 638 00:34:47,040 --> 00:34:50,530 Então, uma coisa importante a notar, aqui, é que todas essas coisas, por aqui - 639 00:34:50,530 --> 00:34:54,330 este controlador de exibição de tabela, a tabela vista, a seção de exibição de tabela, exibição de tabela 640 00:34:54,330 --> 00:34:57,169 célula - todos estes são objetos, no código. 641 00:34:57,169 --> 00:35:03,752 Então, você sabe, um rótulo agora está sob o ponto de vista de conteúdo, et cetera. 642 00:35:03,752 --> 00:35:05,020 Assim por diante e assim por diante. 643 00:35:05,020 --> 00:35:08,765 >> Então, se executar este código, deve ver algo - 644 00:35:08,765 --> 00:35:15,816 645 00:35:15,816 --> 00:35:17,870 vamos ver se isso - sim. 646 00:35:17,870 --> 00:35:18,670 Então, lá vamos nós. 647 00:35:18,670 --> 00:35:22,120 Mas, se não fizermos isso, nenhum dessas outras coisas funcionam. 648 00:35:22,120 --> 00:35:22,500 Certo? 649 00:35:22,500 --> 00:35:23,800 Então, só que este funciona. 650 00:35:23,800 --> 00:35:29,100 E, por uma questão de tempo, eu não vou entrar, você sabe, colocando 651 00:35:29,100 --> 00:35:29,770 para baixo os outros. 652 00:35:29,770 --> 00:35:32,020 E este é o fim de, tipo, storyboard - 653 00:35:32,020 --> 00:35:33,400 o que eu queria mostrar por storyboard. 654 00:35:33,400 --> 00:35:36,330 655 00:35:36,330 --> 00:35:43,490 >> E, eu tenho um exemplo trabalhado, Na verdade, aqui. 656 00:35:43,490 --> 00:35:48,090 Então, este é o storyboard que fiz anteriormente. 657 00:35:48,090 --> 00:35:52,740 Então, como você pode ver, este foi meu controlador de navegação. 658 00:35:52,740 --> 00:35:57,040 Então, eu tive meu primeiro controlador de vista, então eu tinha o meu controlador de exibição de tabela, 659 00:35:57,040 --> 00:35:58,980 e então eu tive tudo isso - 660 00:35:58,980 --> 00:36:01,180 assim antes, eu estava fazendo algo muito diferente. 661 00:36:01,180 --> 00:36:04,450 Então, desculpe essas coisas. 662 00:36:04,450 --> 00:36:07,930 Eu provavelmente vou limpá-lo mais tarde, antes Eu enviá-lo para a produção. 663 00:36:07,930 --> 00:36:12,800 >> Mas, se executar este, vamos ver que todas as opções são 664 00:36:12,800 --> 00:36:14,050 disponível para nós. 665 00:36:14,050 --> 00:36:18,540 666 00:36:18,540 --> 00:36:21,320 Só que eu não fiz os planos de fundo essas cores. 667 00:36:21,320 --> 00:36:26,510 Então, boa aplicação simples. 668 00:36:26,510 --> 00:36:28,340 >> Agora, vamos tentar resolver isso programaticamente. 669 00:36:28,340 --> 00:36:31,270 670 00:36:31,270 --> 00:36:32,130 OK. 671 00:36:32,130 --> 00:36:37,570 Então, para fazer isso, nós apenas estamos indo para iniciar um novo projeto Xcode. 672 00:36:37,570 --> 00:36:41,920 Vamos torná-lo um aplicativo vazio agora, porque não quer ter o 673 00:36:41,920 --> 00:36:42,380 storyboard. 674 00:36:42,380 --> 00:36:46,590 Então, eu estou simplesmente restringindo-me a não usar qualquer um dos storyboard, e um 675 00:36:46,590 --> 00:36:49,170 aplicação vazio não vai dê-me um storyboard. 676 00:36:49,170 --> 00:36:52,256 Este é apenas para evitar me de fazer batota. 677 00:36:52,256 --> 00:36:54,428 Vamos ver. 678 00:36:54,428 --> 00:36:55,360 Espere. 679 00:36:55,360 --> 00:36:55,960 Did I - 680 00:36:55,960 --> 00:36:56,448 Sim. 681 00:36:56,448 --> 00:36:57,698 OK. 682 00:36:57,698 --> 00:37:08,650 683 00:37:08,650 --> 00:37:09,180 >> Certo. 684 00:37:09,180 --> 00:37:16,790 Então, aqui, ficamos com nada mais do que código. 685 00:37:16,790 --> 00:37:19,460 Então, deixe-me mover esta janela um pouco mais. 686 00:37:19,460 --> 00:37:22,020 687 00:37:22,020 --> 00:37:22,260 Certo. 688 00:37:22,260 --> 00:37:28,160 Como você pode ver aqui, os únicos arquivos nós estamos dando são AppDelegate.h e ponto 689 00:37:28,160 --> 00:37:30,500 m, e não temos storyboard mais. 690 00:37:30,500 --> 00:37:39,580 >> Então, se nós executar este, ainda estamos indo para chegar à tela branca, graças a Deus. 691 00:37:39,580 --> 00:37:42,280 OK - tela branca, mas nada mais. 692 00:37:42,280 --> 00:37:45,260 E aqui é a parte importante. 693 00:37:45,260 --> 00:37:47,810 Este é o lugar onde a ação acontece. 694 00:37:47,810 --> 00:37:51,410 Nas versões anteriores, não há geralmente nenhum código aqui, mas o 695 00:37:51,410 --> 00:37:55,600 storyboard fornece essencialmente o código para esta parte. 696 00:37:55,600 --> 00:37:57,470 Eu não vou entrar em detalhes sobre como. 697 00:37:57,470 --> 00:38:02,890 >> E o que nós queremos fazer agora é, nós queremos para entrar aqui, e este pequeno espaço 698 00:38:02,890 --> 00:38:05,050 começa a criar nosso aplicativo novamente. 699 00:38:05,050 --> 00:38:06,092 So - 700 00:38:06,092 --> 00:38:06,318 sim? 701 00:38:06,318 --> 00:38:07,450 >> AUDIÊNCIA: Zoom? 702 00:38:07,450 --> 00:38:07,770 >> RHED SHI: Zoom. 703 00:38:07,770 --> 00:38:09,020 Sim, claro. 704 00:38:09,020 --> 00:38:13,940 705 00:38:13,940 --> 00:38:14,520 OK. 706 00:38:14,520 --> 00:38:17,380 Eu estarei escrevendo, e isso não deve importa muito. 707 00:38:17,380 --> 00:38:17,940 OK. 708 00:38:17,940 --> 00:38:22,720 >> Então, em primeiro lugar, lembre-se nós quisemos criar um controlador de navegação, certo? 709 00:38:22,720 --> 00:38:27,090 E também, como você pode ver aqui, Xcode faz um ótimo trabalho de 710 00:38:27,090 --> 00:38:28,070 auto-preenchimento. 711 00:38:28,070 --> 00:38:31,650 Então, como você vai notar, os nomes dos tudo é muito mais do que 712 00:38:31,650 --> 00:38:33,910 de costume, mas Xcode enche-lo para você. 713 00:38:33,910 --> 00:38:35,710 Então, eu posso apenas pressione Enter. 714 00:38:35,710 --> 00:38:40,180 >> Então, eu quero criar uma navegação UI ponteiro controlador, e eu posso chamá-lo 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 Agora, o que eu faço agora? 718 00:38:44,470 --> 00:38:49,510 Após este sinal de igual, eu preciso, em primeiro lugar, criá-lo dentro da memória. 719 00:38:49,510 --> 00:38:53,790 Então, eu vou fazer NavigationController alloc - 720 00:38:53,790 --> 00:38:56,640 por isso, este é semelhante ao malloc, que vocês usados ​​em C - 721 00:38:56,640 --> 00:38:58,400 e depois, vou para o init-lo. 722 00:38:58,400 --> 00:39:03,670 >> Então, é muito importante que qualquer objeto que você criar, você quer 723 00:39:03,670 --> 00:39:04,940 alloc e init-lo. 724 00:39:04,940 --> 00:39:08,600 Isso vai criá-lo e instantialize-lo dentro da memória, e 725 00:39:08,600 --> 00:39:10,480 agora você pode usá-lo. 726 00:39:10,480 --> 00:39:10,780 Tudo bem? 727 00:39:10,780 --> 00:39:14,360 Se você não fizer isso, seu objeto faz não existe, e você vai correr em um monte 728 00:39:14,360 --> 00:39:17,290 de problemas. 729 00:39:17,290 --> 00:39:20,250 >> E então, eu quero criar um controlador de vista, certo? 730 00:39:20,250 --> 00:39:25,580 Então, eu quero criar um UIViewController star - 731 00:39:25,580 --> 00:39:29,620 assim, tudo é um ponteiro em Objective-C, e eu vou fazer 732 00:39:29,620 --> 00:39:31,600 algo semelhante, aqui - 733 00:39:31,600 --> 00:39:32,850 alocação, o init. 734 00:39:32,850 --> 00:39:38,680 735 00:39:38,680 --> 00:39:40,150 OK. 736 00:39:40,150 --> 00:39:43,450 >> E então, o que eu vou fazer é, eu sou vai - assim, lembre-se, quando fizemos 737 00:39:43,450 --> 00:39:45,360 a incorporar em controlador de navegação? 738 00:39:45,360 --> 00:39:46,920 Isto é como você fazê-lo em código. 739 00:39:46,920 --> 00:39:54,550 Você vai fazer navigationController 740 00:39:54,550 --> 00:39:55,780 pushViewController - 741 00:39:55,780 --> 00:39:57,636 >> AUDIÊNCIA: [inaudível]. 742 00:39:57,636 --> 00:39:59,030 Será que isto vai acontecer para nós, ou -? 743 00:39:59,030 --> 00:40:00,080 >> RHED SHI: Ah, sim. 744 00:40:00,080 --> 00:40:00,550 Não. 745 00:40:00,550 --> 00:40:02,740 Ele gosta mais de mim. 746 00:40:02,740 --> 00:40:04,670 Não, ele vai trabalhar para você, também. 747 00:40:04,670 --> 00:40:06,700 Portanto, estes são todos os métodos. 748 00:40:06,700 --> 00:40:10,400 Assim pushViewController é um método, e também, mais especificamente, é um 749 00:40:10,400 --> 00:40:13,590 método de instância da interface do usuário controlador de navegação. 750 00:40:13,590 --> 00:40:20,030 Porque eu tive que criar minha navegação UI estrela controlador, e então eu 751 00:40:20,030 --> 00:40:24,510 pode chamar esse pushViewController no meu exemplo específico de um sistema de navegação de UI 752 00:40:24,510 --> 00:40:25,010 controlador. 753 00:40:25,010 --> 00:40:29,490 >> AUDIÊNCIA: Nós temos que fazer exatamente o palavra, ou será que já existem para isso? 754 00:40:29,490 --> 00:40:31,380 >> RHED SHI: Sim, porque é um método. 755 00:40:31,380 --> 00:40:32,200 É como uma função. 756 00:40:32,200 --> 00:40:33,330 É como printf. 757 00:40:33,330 --> 00:40:34,390 É como scanf. 758 00:40:34,390 --> 00:40:36,250 É como strcompare. 759 00:40:36,250 --> 00:40:40,310 Só que sabe o que você pode querer digita, e observe que ele vai sempre 760 00:40:40,310 --> 00:40:42,740 venha com coisas que são legalmente permitido para você. 761 00:40:42,740 --> 00:40:47,620 Então, se nada aparecer por aqui, então algo está errado. 762 00:40:47,620 --> 00:40:50,550 >> Então, pushViewController. 763 00:40:50,550 --> 00:40:52,580 Então, agora, eu quero empurrar meu recém-criado 764 00:40:52,580 --> 00:40:56,850 UIViewController, e em seguida, animado - 765 00:40:56,850 --> 00:40:57,470 talvez não. 766 00:40:57,470 --> 00:41:00,110 Porque é que isto vai ser o primeiro controlador de vista. 767 00:41:00,110 --> 00:41:03,210 Quero dizer, mesmo que eu fiz de animação, ele provavelmente não vai aparecer, porque 768 00:41:03,210 --> 00:41:05,050 é a primeira tela. 769 00:41:05,050 --> 00:41:06,540 >> E lembre-se os suportes. 770 00:41:06,540 --> 00:41:08,850 Então, lembre-se de como costumávamos os suportes? 771 00:41:08,850 --> 00:41:11,870 E dentro dos colchetes, o objeto chama em um método - 772 00:41:11,870 --> 00:41:15,910 por isso o nosso objetivo é o de navegação controlador, e o método é um impulso 773 00:41:15,910 --> 00:41:17,210 controlador de vista animado. 774 00:41:17,210 --> 00:41:21,920 E ver como ele leva em dois argumentos, e eles estão separados pelo, tipo, 775 00:41:21,920 --> 00:41:24,390 palavras, e dois pontos. 776 00:41:24,390 --> 00:41:28,300 Então, Objective-C tenta torná-lo agradável e fácil para você ler em voz alta - 777 00:41:28,300 --> 00:41:33,020 seu código - e tê-lo semi, de alguma forma, faz sentido. 778 00:41:33,020 --> 00:41:37,150 >> No entanto, fazendo exatamente isso não é suficiente. 779 00:41:37,150 --> 00:41:39,780 Deixe-me afastar agora. 780 00:41:39,780 --> 00:41:44,210 Fazer apenas isso não é suficiente para conseguir o que nós conseguimos anteriormente. 781 00:41:44,210 --> 00:41:48,580 Então, aqui, você vai perceber que não há realmente não vai ser qualquer tipo de 782 00:41:48,580 --> 00:41:50,190 Bar, aqui, certo? 783 00:41:50,190 --> 00:41:54,680 Não há nenhuma barra de navegação, o que significa que ainda não tenham conseguido. 784 00:41:54,680 --> 00:41:58,850 >> E podemos testar isso, também, por, talvez, alterar o fundo de 785 00:41:58,850 --> 00:42:00,460 ViewController, certo? 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 ah. 789 00:42:03,640 --> 00:42:07,690 Então, veja como ViewController não tinha uma cor de fundo, mesmo que eu 790 00:42:07,690 --> 00:42:08,780 queria acessá-lo? 791 00:42:08,780 --> 00:42:14,080 E isso é porque ViewController é um recipiente para a vista. 792 00:42:14,080 --> 00:42:19,490 Então, ele tem uma propriedade vista, que em seguida, tem uma cor de fundo. 793 00:42:19,490 --> 00:42:25,510 >> E, posso defini-lo, uma espécie de tediosamente, chamando a cor 794 00:42:25,510 --> 00:42:28,130 no objeto UIColor. 795 00:42:28,130 --> 00:42:33,210 Então, aviso aqui, RedColor é um método. 796 00:42:33,210 --> 00:42:36,750 É um método de classe de UIColor. 797 00:42:36,750 --> 00:42:40,820 Porque eu não tinha que criar um exemplo real de um UIColor em ordem 798 00:42:40,820 --> 00:42:42,020 para chamar o método nela. 799 00:42:42,020 --> 00:42:45,050 Eu apenas, simplesmente, chamou- sobre o nome do tipo-like. 800 00:42:45,050 --> 00:42:49,620 Eu, como, chamou-a em int, int, se tivesse, assim, um método a ele, por exemplo. 801 00:42:49,620 --> 00:42:52,380 >> E assim, se executar este código, vamos notar que o fundo é 802 00:42:52,380 --> 00:42:53,540 realmente não vermelho. 803 00:42:53,540 --> 00:42:54,790 Ainda é branco. 804 00:42:54,790 --> 00:42:57,720 805 00:42:57,720 --> 00:43:04,550 E como podemos contornar isto é, observe como há o self.window. 806 00:43:04,550 --> 00:43:08,260 Isto é, como, o recipiente final para sua aplicação. 807 00:43:08,260 --> 00:43:11,630 É a última coisa que contenha tudo na tela, para um 808 00:43:11,630 --> 00:43:13,650 iPhone ou aplicativo iPad. 809 00:43:13,650 --> 00:43:20,970 >> E, convenientemente, self.window tem essa propriedade chamada 810 00:43:20,970 --> 00:43:22,650 RootViewController. 811 00:43:22,650 --> 00:43:26,480 E isso vai ser o ponteiro para o primeiro controlador de vista interior 812 00:43:26,480 --> 00:43:27,270 do seu aplicativo. 813 00:43:27,270 --> 00:43:32,000 Então, o que nós queremos fazer aqui, agora, é para definir que igual a nossa navegação 814 00:43:32,000 --> 00:43:32,710 controlador. 815 00:43:32,710 --> 00:43:33,760 Certo? 816 00:43:33,760 --> 00:43:37,490 Porque, tecnicamente, a navegação controlador é a nossa primeira vista 817 00:43:37,490 --> 00:43:38,770 controlador. 818 00:43:38,770 --> 00:43:46,160 Ele mantém o controle de uma matriz de outro ponto de vista controladores, e que empurrou este 819 00:43:46,160 --> 00:43:49,810 controlador em vista essa matriz no controlador de navegação. 820 00:43:49,810 --> 00:43:52,640 >> Então, você não quer fazer isso. 821 00:43:52,640 --> 00:43:54,225 Isso não seria realmente ajudá-lo. 822 00:43:54,225 --> 00:43:58,040 Você quer fazer isso, se você queria fazer um controlador de navegação, o que mais 823 00:43:58,040 --> 00:44:01,100 de vocês provavelmente porque você vai querer para, de alguma forma, têm algum tipo de, 824 00:44:01,100 --> 00:44:04,840 como, menu para voltar para ou algum homepage para voltar para, ao invés de um 825 00:44:04,840 --> 00:44:05,470 tela vazia. 826 00:44:05,470 --> 00:44:05,920 Sim? 827 00:44:05,920 --> 00:44:11,460 >> AUDIÊNCIA: É desconfortável para que você possa ampliar a - 828 00:44:11,460 --> 00:44:12,710 >> RHED SHI: Yeah. 829 00:44:12,710 --> 00:44:15,310 830 00:44:15,310 --> 00:44:15,720 Então, sim. 831 00:44:15,720 --> 00:44:22,370 Este é o código, e agora Vamos testá-lo. 832 00:44:22,370 --> 00:44:27,920 >> Então, lá vamos nós. 833 00:44:27,920 --> 00:44:29,170 Magia. 834 00:44:29,170 --> 00:44:30,960 835 00:44:30,960 --> 00:44:32,690 Então, OK. 836 00:44:32,690 --> 00:44:34,420 Obrigado. 837 00:44:34,420 --> 00:44:35,000 OK. 838 00:44:35,000 --> 00:44:38,690 Então, agora, o que nós queremos fazer é - então, nós estamos nos limitando, aqui, certo? 839 00:44:38,690 --> 00:44:45,130 Podemos potencialmente escrever tudo dentro deste uma função. 840 00:44:45,130 --> 00:44:48,470 Mas, isso não é como iOS desenvolvimento geralmente funciona. 841 00:44:48,470 --> 00:44:53,030 >> Então, o que nós vamos fazer é, estamos vai criar alguns novos arquivos. 842 00:44:53,030 --> 00:44:57,110 Mas, mais especificamente, vamos criar uma outra classe Objective-C, ou 843 00:44:57,110 --> 00:44:58,010 outro objeto - 844 00:44:58,010 --> 00:45:00,700 classe e objetos são intercambiáveis aqui. 845 00:45:00,700 --> 00:45:06,460 E, aqui está como eu poderia, potencialmente, criar uma outra classe de U controladores. 846 00:45:06,460 --> 00:45:12,030 >> Então, é uma sub-classe, como você verá, aqui, é uma sub-classe da 847 00:45:12,030 --> 00:45:15,910 Controlador de vista da interface do usuário, mas eu posso chamá-lo de qualquer outro nome aqui. 848 00:45:15,910 --> 00:45:19,400 Eu poderia chamar isso de CS50, eu poderia chamar este controlador de vista, eu poderia chamar 849 00:45:19,400 --> 00:45:21,640 este controlador de vista blá - 850 00:45:21,640 --> 00:45:22,400 o que eu quiser. 851 00:45:22,400 --> 00:45:24,140 Este é apenas o nome para a classe. 852 00:45:24,140 --> 00:45:27,020 No entanto, isso vai ser importante porque, essencialmente, o que estou fazendo 853 00:45:27,020 --> 00:45:29,720 aqui é, eu estou criando outro nome da classe. 854 00:45:29,720 --> 00:45:34,140 Então, ele vai ser, tipo, alguns espécie de tipo ou um objeto. 855 00:45:34,140 --> 00:45:35,910 Assim, ele deve ser um pouco mais genérica. 856 00:45:35,910 --> 00:45:37,225 Não vai ser muito específico. 857 00:45:37,225 --> 00:45:40,410 858 00:45:40,410 --> 00:45:44,480 >> E também, eu quero apontar fora essas duas opções. 859 00:45:44,480 --> 00:45:48,430 Porque nós estamos fazendo tudo dentro de código, às vezes é muito mais fácil 860 00:45:48,430 --> 00:45:53,540 para trazer um arquivo de interface, de modo que Eu posso literalmente arrastar e soltar, como 861 00:45:53,540 --> 00:45:54,960 fizemos anteriormente com storyboard - 862 00:45:54,960 --> 00:45:57,810 você sabe, um rótulo, ou um botão, ou qualquer outra coisa. 863 00:45:57,810 --> 00:46:01,950 E assim, XIBs são arquivos que permitem que você Faça isso, e você tem que ligá-lo 864 00:46:01,950 --> 00:46:04,310 para este ficheiro controlador de vista. 865 00:46:04,310 --> 00:46:06,540 >> Então, eu vou deliberadamente não verificar isso. 866 00:46:06,540 --> 00:46:12,510 Normalmente eu iria verificar isso, e se eu só fez isso para iPhone ou iPad, eu 867 00:46:12,510 --> 00:46:16,340 iria verificar isso e simplesmente ter um para, você sabe, o iPhone ou o iPad. 868 00:46:16,340 --> 00:46:19,750 Mas desde que eu estou fazendo universal, eu vou para criar dois deles mais tarde. 869 00:46:19,750 --> 00:46:22,220 Então, eu vou deliberadamente desmarque esta. 870 00:46:22,220 --> 00:46:23,940 >> Isso também é muito importante. 871 00:46:23,940 --> 00:46:27,490 Muitas vezes, eu tive erros onde isso não foi verificado. 872 00:46:27,490 --> 00:46:31,930 E assim, obviamente, esse arquivo não é, tipo de, tipo, incluídos ou importados 873 00:46:31,930 --> 00:46:33,740 dentro desta pasta de teste. 874 00:46:33,740 --> 00:46:38,180 E assim, o meu código não tem absolutamente nenhuma idéia da existência deste arquivo, e 875 00:46:38,180 --> 00:46:41,080 que causa muita dor e horas de depuração. 876 00:46:41,080 --> 00:46:44,360 Mas, apenas certifique-se esta é verificada de modo que, você sabe, o alvo desta 877 00:46:44,360 --> 00:46:47,510 arquivo é para esta aplicação. 878 00:46:47,510 --> 00:46:48,310 >> OK. 879 00:46:48,310 --> 00:46:51,680 Então, agora nós criamos dois novos arquivos. 880 00:46:51,680 --> 00:46:54,050 E esses arquivos parecem muito vazio. 881 00:46:54,050 --> 00:46:59,550 E, na verdade, vamos também continuar pela criação dos arquivos xib. 882 00:46:59,550 --> 00:47:03,690 Então, antes, eu estava no Cocoa Touch drop-down. 883 00:47:03,690 --> 00:47:06,880 Agora, eu estou indo para ir para o Usuário Interface de toque, e como você pode ver, eu 884 00:47:06,880 --> 00:47:08,120 pode criar um storyboard. 885 00:47:08,120 --> 00:47:11,710 >> Assim, mesmo que eu comecei com um vazio aplicação, ainda posso usar um 886 00:47:11,710 --> 00:47:12,340 storyboard. 887 00:47:12,340 --> 00:47:15,480 Embora, fica complicado em termos de como você deseja se conectar 888 00:47:15,480 --> 00:47:16,820 que ao seu código. 889 00:47:16,820 --> 00:47:18,230 Então, eu não vou lá. 890 00:47:18,230 --> 00:47:22,160 >> Mas, o que nós queremos fazer agora é criar uma visão. 891 00:47:22,160 --> 00:47:25,720 E você pode escolher para um iPhone ou um iPad. 892 00:47:25,720 --> 00:47:30,180 E tipicamente, a identificar a diferença - se você está fazendo uma 893 00:47:30,180 --> 00:47:31,950 aplicação universal - 894 00:47:31,950 --> 00:47:35,980 você quer colocar um iPhone sublinhado, ou você pode fazer um Twiddly. 895 00:47:35,980 --> 00:47:36,980 Realmente não importa. 896 00:47:36,980 --> 00:47:40,890 É simplesmente para você se diferenciar que vista é para o qual dispositivo. 897 00:47:40,890 --> 00:47:43,470 898 00:47:43,470 --> 00:47:44,430 >> E assim, agora olhar. 899 00:47:44,430 --> 00:47:47,550 Eu tenho uma tela que eu possa trabalhar. 900 00:47:47,550 --> 00:47:53,530 E assim, por exemplo, eu posso colocar um rótulo aqui, você sabe, e eu também pode colocar 901 00:47:53,530 --> 00:47:54,820 outro botão aqui. 902 00:47:54,820 --> 00:47:58,730 Eu não vou incomodar mudar os valores aqui. 903 00:47:58,730 --> 00:48:09,050 >> Mas, o que é importante aqui é que o dono do arquivo - 904 00:48:09,050 --> 00:48:13,660 assim, eu estou dentro do iPhone vista, arquivo iPhone xib. 905 00:48:13,660 --> 00:48:18,050 E para baixo nesta área de navegação ou menu drop-down, eu quero ir para o 906 00:48:18,050 --> 00:48:19,090 proprietário do arquivo. 907 00:48:19,090 --> 00:48:22,630 E esta é a verdade importante passo aqui. 908 00:48:22,630 --> 00:48:27,780 Eu quero fazer o ponto de vista de classe controlador, de modo que esse arquivo é xib 909 00:48:27,780 --> 00:48:30,030 vai ser associado com meu controlador de vista. 910 00:48:30,030 --> 00:48:33,590 911 00:48:33,590 --> 00:48:39,360 E qualquer coisa que eu faço dentro do meu ponto de vista controlador de programação é 912 00:48:39,360 --> 00:48:42,800 vai ser refletido aqui. 913 00:48:42,800 --> 00:48:46,270 >> Então, no entanto, notar que - 914 00:48:46,270 --> 00:48:55,995 Na verdade, vamos fazer esse ponto de vista fundo azul, por exemplo. 915 00:48:55,995 --> 00:49:00,280 916 00:49:00,280 --> 00:49:01,530 Ou verde. 917 00:49:01,530 --> 00:49:03,870 918 00:49:03,870 --> 00:49:07,950 E então, por isso, se você observar, de volta este código, é aqui que chegamos ao nosso 919 00:49:07,950 --> 00:49:09,200 controlador de navegação. 920 00:49:09,200 --> 00:49:12,650 921 00:49:12,650 --> 00:49:18,310 >> Mesmo que nós fizemos esse passo, é ainda vai ser vermelho, não verde. 922 00:49:18,310 --> 00:49:20,350 E há uma razão para isso. 923 00:49:20,350 --> 00:49:28,090 É porque, quando nós inited nosso controlador de vista, aqui - 924 00:49:28,090 --> 00:49:30,010 desculpe, é um pouco louco - 925 00:49:30,010 --> 00:49:34,520 quando inited nosso controlador de vista aqui, nós inited ele do tipo geral 926 00:49:34,520 --> 00:49:35,990 UIViewController. 927 00:49:35,990 --> 00:49:36,560 OK? 928 00:49:36,560 --> 00:49:40,560 Então, nós não até mesmo fazer com esta classe. 929 00:49:40,560 --> 00:49:42,030 >> Então lembre-se, isto é como uma aula agora. 930 00:49:42,030 --> 00:49:47,160 Ele pode ser pensado como um tipo, basta como UIViewController é um tipo. 931 00:49:47,160 --> 00:49:51,080 E, a fim de usá-lo, o que o que precisamos fazer é importá-lo - 932 00:49:51,080 --> 00:49:52,520 ViewController importação - 933 00:49:52,520 --> 00:49:55,750 e, como você pode ver, AutoPreenchimento para mim. 934 00:49:55,750 --> 00:49:56,570 Então, ViewController - 935 00:49:56,570 --> 00:50:02,070 e agora, aqui, eu posso mudar isso UIViewController para ViewController. 936 00:50:02,070 --> 00:50:05,050 E agora, aqui, eu posso mudar isto para ViewController. 937 00:50:05,050 --> 00:50:07,790 938 00:50:07,790 --> 00:50:09,250 >> Vamos correr novamente. 939 00:50:09,250 --> 00:50:16,970 940 00:50:16,970 --> 00:50:19,690 Ele ainda está vermelho. 941 00:50:19,690 --> 00:50:23,370 E a razão pela qual é ainda vermelho é porque - 942 00:50:23,370 --> 00:50:26,230 woah, o que aconteceu lá? 943 00:50:26,230 --> 00:50:31,500 Quisemos associar este xib arquivo com o controlador de vista. 944 00:50:31,500 --> 00:50:37,540 No entanto, a fim de realmente fazer que, precisamos entrar nessa. 945 00:50:37,540 --> 00:50:42,980 E quando fazemos o init, que queremos fazer initWithNibName, e então nós queremos 946 00:50:42,980 --> 00:50:48,910 fazer o em cadeia View_iPhone, por exemplo. 947 00:50:48,910 --> 00:50:51,700 Você pode ignorar o pacote aqui. 948 00:50:51,700 --> 00:50:54,965 >> E isso vai permitir que nós, na verdade - 949 00:50:54,965 --> 00:51:00,620 950 00:51:00,620 --> 00:51:02,160 uh oh, há um problema. 951 00:51:02,160 --> 00:51:09,300 952 00:51:09,300 --> 00:51:09,980 Certo. 953 00:51:09,980 --> 00:51:17,670 >> E assim, não é um problema porque, em nosso arquivo de visão xib, temos um rótulo e 954 00:51:17,670 --> 00:51:18,720 temos um botão. 955 00:51:18,720 --> 00:51:23,660 No entanto, apesar de ter ligado aqueles dois, não há nada dentro de 956 00:51:23,660 --> 00:51:27,440 ViewController.h ou ViewController.m que refletem as 957 00:51:27,440 --> 00:51:29,160 botões ou os rótulos. 958 00:51:29,160 --> 00:51:32,425 Então, a gente precisa escrever aqueles em que propriedades do controlador de vista. 959 00:51:32,425 --> 00:51:35,290 960 00:51:35,290 --> 00:51:39,490 >> Então, é assim que você declarar uma propriedade. 961 00:51:39,490 --> 00:51:43,422 Leva em, geralmente, estas duas opções. 962 00:51:43,422 --> 00:51:48,690 Para efeitos de nós e este seminário, Eu diria que, em geral, 963 00:51:48,690 --> 00:51:52,250 a maioria das propriedades são nonatomic e reter. 964 00:51:52,250 --> 00:51:55,420 Você pode ler-se pelo Google busca, você sabe, a diferença entre 965 00:51:55,420 --> 00:51:58,620 atômica e reter, você sabe, o Google ou algo assim. 966 00:51:58,620 --> 00:52:01,090 E eu vou levá-lo para, como, Pilha Overflow, onde as pessoas terão 967 00:52:01,090 --> 00:52:03,605 respostas para as diferenças entre aqueles. 968 00:52:03,605 --> 00:52:07,000 Mas, por enquanto, é isso que nós quer se preocupar com. 969 00:52:07,000 --> 00:52:12,790 >> E nós queremos fazer um rótulo UI, estrela, e podemos chamá-lo de tudo o que queremos. 970 00:52:12,790 --> 00:52:15,710 Podemos chamar isso, você sabe, o rótulo. 971 00:52:15,710 --> 00:52:18,270 972 00:52:18,270 --> 00:52:20,110 E, vamos criar outro um para o botão. 973 00:52:20,110 --> 00:52:24,380 974 00:52:24,380 --> 00:52:29,910 E lembre-se de incluir o asterisco, porque estamos a lidar com ponteiros 975 00:52:29,910 --> 00:52:36,740 praticamente todos os lugares dentro de Objective-C. 976 00:52:36,740 --> 00:52:42,110 >> No entanto, isso ainda não vai resolver o problema, como você pode ver aqui. 977 00:52:42,110 --> 00:52:50,540 E a razão é porque, sempre que quiser conectar um rótulo xib ou um 978 00:52:50,540 --> 00:52:55,690 botão para o programa, ou o cabeçalho e arquivo de implementação, nós queremos 979 00:52:55,690 --> 00:52:58,255 adicionar este pedaço de código - 980 00:52:58,255 --> 00:53:00,610 saída. 981 00:53:00,610 --> 00:53:03,600 Observe que é uma palavra-chave. 982 00:53:03,600 --> 00:53:07,970 >> E, assim que eu terminar de digitar isso, ele deve ter estes 983 00:53:07,970 --> 00:53:09,100 dois círculos, aqui. 984 00:53:09,100 --> 00:53:11,200 Normalmente, eles não estão preenchidos 985 00:53:11,200 --> 00:53:12,920 Eu não sei por que eles são. 986 00:53:12,920 --> 00:53:21,370 Mas, geralmente, você terá que manualmente conectá-los, indo para este lado 987 00:53:21,370 --> 00:53:23,530 área de utilidades. 988 00:53:23,530 --> 00:53:28,430 >> E assim, agora, eu tenho a minha etiqueta selecionado, e eu quero arrastar esse novo 989 00:53:28,430 --> 00:53:33,910 referenciando saída para o dono do meu arquivo, e, em seguida, clique em Label. 990 00:53:33,910 --> 00:53:40,230 Então, agora, finalmente, esse rótulo é ligado a este marcador. 991 00:53:40,230 --> 00:53:44,950 E este rótulo é o que nós vamos programaticamente usar para mudar o seu 992 00:53:44,950 --> 00:53:49,250 texto, sua fonte, seu fundo cor, et cetera. 993 00:53:49,250 --> 00:53:52,430 >> Então, por que não fazemos o mesmo para o botão? 994 00:53:52,430 --> 00:53:54,770 E como você vai notar, para o botão, é um pouco mais complicado. 995 00:53:54,770 --> 00:53:59,060 Porque, quero dizer, você deveria imprensa em um botão, por isso tem um monte 996 00:53:59,060 --> 00:54:02,950 de opções para a forma como os usuários pode pressionar um botão. 997 00:54:02,950 --> 00:54:06,570 E então, vamos ver mais tarde que podemos ligar isso ao nosso 998 00:54:06,570 --> 00:54:09,140 código para que ele funcione. 999 00:54:09,140 --> 00:54:12,770 >> Assim, por agora, porém, que pretende ligar o para o botão real 1000 00:54:12,770 --> 00:54:13,570 dentro do nosso código. 1001 00:54:13,570 --> 00:54:19,640 Então vamos para a nova tomada de referenciação, e, em seguida, fazer o botão. 1002 00:54:19,640 --> 00:54:22,068 Agora, vamos executar este novamente. 1003 00:54:22,068 --> 00:54:23,040 Uh oh. 1004 00:54:23,040 --> 00:54:23,890 OK. 1005 00:54:23,890 --> 00:54:25,140 Eu não sei o que está acontecendo aqui agora. 1006 00:54:25,140 --> 00:54:48,450 1007 00:54:48,450 --> 00:54:49,700 Whoa. 1008 00:54:49,700 --> 00:54:57,380 1009 00:54:57,380 --> 00:54:58,960 Só um momento, aqui. 1010 00:54:58,960 --> 00:55:02,490 >> Na verdade, por que não dar uma olhar um outro exemplo em 1011 00:55:02,490 --> 00:55:05,800 o interesse de tempo. 1012 00:55:05,800 --> 00:55:06,200 OK. 1013 00:55:06,200 --> 00:55:10,610 Então, aqui está o mais prontamente preparado exemplo para ViewController. 1014 00:55:10,610 --> 00:55:13,230 1015 00:55:13,230 --> 00:55:17,110 Como você pode ver aqui, eu incluído as propriedades para a 1016 00:55:17,110 --> 00:55:18,460 rótulo eo botão. 1017 00:55:18,460 --> 00:55:20,370 E então, este pedaço de código aqui - 1018 00:55:20,370 --> 00:55:21,830 este IBAction - 1019 00:55:21,830 --> 00:55:27,740 foi uma conexão com este botão aqui. 1020 00:55:27,740 --> 00:55:33,940 Então, como você pode ver aqui, Touch Up Dentro está ligado ao selector 1021 00:55:33,940 --> 00:55:37,390 chamado botão pressionado. 1022 00:55:37,390 --> 00:55:41,700 >> Então, nós podemos realmente passar pelo movimento novo, aqui, tomando Retocar 1023 00:55:41,700 --> 00:55:48,750 Dentro e arrastando-o para Proprietário do arquivo, e depois 1024 00:55:48,750 --> 00:55:51,570 clique no botão pressionado. 1025 00:55:51,570 --> 00:55:52,820 Agora, vamos executar o nosso código. 1026 00:55:52,820 --> 00:55:55,710 1027 00:55:55,710 --> 00:56:02,020 Então, agora, esse botão agora funciona e vai nos levar para a próxima página. 1028 00:56:02,020 --> 00:56:08,430 >> E, em termos de nosso controlador de vista, este é o pedaço de código que levou 1029 00:56:08,430 --> 00:56:10,000 cuidar do botão pressionado. 1030 00:56:10,000 --> 00:56:14,260 E é importante notar aqui, que Eu criei um outro tipo de visão 1031 00:56:14,260 --> 00:56:16,330 controlador de chamada de tabela controlador de vista. 1032 00:56:16,330 --> 00:56:19,900 Então, este foi semelhante para trás em storyboard, quando eu arrastei um dos 1033 00:56:19,900 --> 00:56:23,450 esses controladores tabela vista para o storyboard. 1034 00:56:23,450 --> 00:56:24,470 Estou criando outro 1035 00:56:24,470 --> 00:56:30,000 >> Ponteiro para o controlador de vista de tabela, alloc e init-ing-lo e, em seguida, fazendo 1036 00:56:30,000 --> 00:56:34,490 controlador de navegação auto ponto, empurrar ViewController, este novo 1037 00:56:34,490 --> 00:56:35,350 viewController. 1038 00:56:35,350 --> 00:56:39,750 E eu definir a animação para sim, porque agora dentro do meu aplicativo, e eu 1039 00:56:39,750 --> 00:56:45,670 quer realmente ver a animação vai a partir da home page para a mesa 1040 00:56:45,670 --> 00:56:46,920 controlador de vista. 1041 00:56:46,920 --> 00:56:48,830 1042 00:56:48,830 --> 00:56:51,110 >> AUDIÊNCIA: Você ainda se preocupar sobre a coleta de lixo? 1043 00:56:51,110 --> 00:56:51,840 >> RHED SHI: O que é isso? 1044 00:56:51,840 --> 00:56:54,740 Não. 1045 00:56:54,740 --> 00:56:58,970 Então, a pergunta era: você tem para trabalhar com a coleta de lixo? 1046 00:56:58,970 --> 00:57:03,470 Então, Xcode 4 teve como ARC, que é contagem de referência automática. 1047 00:57:03,470 --> 00:57:06,120 E assim, geralmente quando você inicia um novo projeto, você iria verificar isso, porque 1048 00:57:06,120 --> 00:57:09,440 ninguém quer lidar com liberação de memória e outras coisas. 1049 00:57:09,440 --> 00:57:13,720 Mas eu acho que no Xcode 5, não há sequer essa opção no novo projeto. 1050 00:57:13,720 --> 00:57:16,750 Então, ele automaticamente faz isso para você. 1051 00:57:16,750 --> 00:57:16,920 Sim? 1052 00:57:16,920 --> 00:57:20,970 >> AUDIÊNCIA: Você pode exportar um PDF no storyboard? 1053 00:57:20,970 --> 00:57:22,020 >> RHED SHI: Sim, definitivamente. 1054 00:57:22,020 --> 00:57:28,180 Assim, todos estes serão incluídos em código-fonte, para que vocês podem conferir 1055 00:57:28,180 --> 00:57:30,730 o projeto Xcode real para ele. 1056 00:57:30,730 --> 00:57:31,105 Sim? 1057 00:57:31,105 --> 00:57:35,944 >> AUDIÊNCIA: Mas, quero dizer, como, posso imprimir um PDF com o meu storyboard? 1058 00:57:35,944 --> 00:57:38,920 Se eu só quero exportar o imagens para mostrar alguém. 1059 00:57:38,920 --> 00:57:39,160 >> RHED SHI: Oh yeah. 1060 00:57:39,160 --> 00:57:41,980 Eu acho que, talvez, você pode simplesmente tirar uma captura de tela. 1061 00:57:41,980 --> 00:57:44,350 Sim, e enviá-los de uma tela tiro ou algo assim. 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 >> Então, vamos ver. 1065 00:57:50,570 --> 00:57:56,470 No interesse de tempo, eu acho isso é tudo que posso cobrir hoje. 1066 00:57:56,470 --> 00:57:59,600 Mas, eu sei que é, na verdade, apenas mal tocando a superfície do iOS 1067 00:57:59,600 --> 00:58:00,370 desenvolvimento. 1068 00:58:00,370 --> 00:58:05,630 Então, por favor não hesite em contactar-me se você tem alguma dúvida sobre iOS 1069 00:58:05,630 --> 00:58:07,000 desenvolvimento. 1070 00:58:07,000 --> 00:58:12,840 E, com sorte, eu vou ser capaz de limpar um pouco do código para a fonte 1071 00:58:12,840 --> 00:58:16,830 arquivos de código, de modo que você vai ter algum exemplos muito bom para trabalhar. 1072 00:58:16,830 --> 00:58:21,020 >> Fora isso, se vocês estão indo ao CS50 Hackathon, eu pode ou 1073 00:58:21,020 --> 00:58:25,730 não estar lá, e eu posso ajudar com algum desenvolvimento iOS, também. 1074 00:58:25,730 --> 00:58:26,980 Então, muito obrigado, pessoal. 1075 00:58:26,980 --> 00:58:31,168