RHED Ши: Добредојдовте на види CS50 семинар - Вовед во iOS. Ви благодарам на сите што дојдовте. Се надевам дека ти си само како возбудени како што јас сум за iOS. Минатата година, отидов CS50 како сафомор, и јас во основа научиле iOS за мојата конечниот проект. И тоа беше прилично - Па, тоа не беше лесно, но постојат многу поддршка вежби на интернет. И јас навистина се надевам дека со овој семинар, јас ќе ви даде момци глава започне на iOS развој Значи, во однос на iOS развој, постојат два главни работи што сакате да ги покриеме денес. Прво, јазик - јазикот ќе биде во Objective-C. Ние всушност ќе слушнете нешто навистина возбудливо. Значи, можете да се приклучат на целата Епл заедница на програмери и да се изгради некои навистина страшно апликации. Исто така, iOS 7 е убава, се надевам, на некои од вас. Но тоа е контроверзен, знам. И главно, она што сакам да направите е водич вас преку Objective-C, а исто така Xcode, кое е интегриран развој на животната средина, кои ќе бидат кои работат во за iOS. И така, само еден збор на Objective-C. Во суштина, тоа е иста како C, но со многу други работи. И така, повеќе строго, тоа е всушност супер сет на C. Значи нешто што ви може да се направи во C токму сега, која е во основа се допаѓа pset од 0 до 6, ќе може да се направи во Objective-C. Значи, не се чувствуваат страв за овој нов јазик, кој си оди за да се научат. Вие веќе опфатени многу од тоа, бидејќи сте Сето тоа е направено C минатата семестар, освен сега сте ќе да имаат многу повеќе да се работи со. И јас сум само ќе ве одведе преку неколку примери за да се потенцира некои од клучните разлики што го најдов беа навистина важно кога дознав Objective-C минатата година. Па, всушност, па така, на друго место е, Objective-C е, очигледно, објектно-ориентирана. И ние ќе разговараме малку за тоа што тоа значи подоцна. Во суштина, тоа е како како сте работеле со structs во оваа измината pset, со јазли и слични други работи како што. Освен во Objective-C, сè е објект, и си оди за да биде поминува низ совети како да се предмети отколку на самите вредности. Значи, тоа е само нешто важно да се задржи во умот. Значи, зошто да не почнеме со неколку разлики во синтаксата помеѓу C и Objective-C? Сакам да се потенцира # вклучуваат, можете знаете, стандард io.h во C и C + +, со на цел-C верзија на тоа, што е # увозот, а потоа некој вид на хедер датотека. Во овој случај, тоа ќе биде UIKit, знаете, коса црта UIKit.h. Таа, исто така може да биде, знаеш, MKMapview да ви го намали MKMapview.h ако сакате да се направи, како на пример, на сајтот во внатрешноста на вашиот стан. Слични работи како што. Значи, важно е да го вклучите сега е изменета за увоз. Но идејата останува. Ви се случува да се увезуваат некој вид на хедер датотека во вашата програма. Исто така, сакам да се потенцира разликата помеѓу printf и NSLog. Сепак, како што реков претходно, Objective-C е строга супер-сет на C, што значи дека printf постои во Objective-C, исто така. Но, повеќето луѓе не го искористите тоа. Повеќето луѓе го користат овој NSLog поради тоа што ви дава време за печат, и ќе видиме тоа во акција подоцна. Но, тоа е главно е повеќе корисна начин да се печати надвор варијабли. И јас исто така, сакаат да се нагласи дека NSLog зема во исто случаеви вредности како printf не - така% d е за цел број, % F е за плови. Сепак, сакам да се потенцира овој многу последната - NSLog% на знак - тоа е случаеви за објектот. И како што реков претходно, Objective-C се занимава доста претежно во објекти, и така ова ќе дојде во употреба кога ќе сакате да го испечатите, можеби, можеби NSArray, или NSDictionary, или NSString. Значи, исто така, да се забележи дека, во нашите NSLog изјава, имаме знакот пред на котација - кој е за да се означи дека жици, сега, во Objective-C се објектите. Тие веќе не се едноставно знак ѕвезди. Тие се објекти и се третираат како такви. Значи, тоа е навистина важно кога го користите NSLog е потребно во НС стринг, што значи дека ќе имаат да го вклучите во во предниот дел на својата наводници. И тоа е причината зошто гледате, овде, во сите мојата функција повици кон овој NSLog, јас имаат на пред цитати, дури и иако% d и% f се сите се исти од C. Било какви прашања досега? Ќе се обидам да одат преку овој брзо, па дека можеме да имаме повеќе време да работи со Xcode и Objective-C, па дека вие момци можат да добијат повеќе запознаени со него. Следно, сакам да се потенцира нешто концептуално важно. Значи, во C, и повеќето работи се функции. Ние се направи повик функција. Сакаме да укажеме функции на овој начин, со враќање тип, а потоа на име на функција, загради, а потоа она што аргументите и видот на овие аргументи што сакаме да го помине внатре И Objective-C, бидејќи сè е објект или класа - па класа и објектот се два термина кои најчесто се синоним едни со други, па јас да ги користите мешаат во текот на семинарот. Но, ќе се види дека имаме методи во Objective-C, наместо функции. И методи припаѓаат на објекти. Па само како, можеби се на пример, јазол - нашиот вид [нечујни] јазол од pset 6 или 5 - имаме зборот, имот, или следниот јазол покажувач. Методи се едноставно функции во на некој вид на структура. Значи, во овој случај, структурата ќе биде објектот, а потоа метод е нешто што му припаѓа на објектот. И ова е како вие да признаете, на некој начин, метод. Ќе се започне со, повторно, враќањето тип - тоа, јас се обидував да боја кодот на клучни зборови тука, така што вие момци може да се види, барем, форматирање сличности помеѓу функција декларации и метод декларации. Значи, ќе почнете со, знаете, враќање тип - во овој случај, тоа е низа, или на NSArray покажувачот - и тогаш го имате овој метод. А потоа, она што е интересно овде е дека наместо загради, ние имаат овие запирки. И тогаш, пред нашите аргументи, ние кажано, повторно, во голема заграда типот на нашите аргумент. Значи, токму сега се обидувам да се направи споредба помеѓу, знаеш, n и број, затоа што тие се двете како ints. А потоа, другиот е од типот NSUInteger. А потоа, со Objective-C, кога ќе сакате да имате повеќе аргументи во вашиот метод клаузула, ти, на некој начин, одделете ги надвор нешто како ова - Јас не сум сосема сигурен како да го објаснам, но ова е добар пример за тоа како можете може да има повеќе аргументи во таму. Можете да, се разбира, само целосно игнорира andArray дебелото црево NSArray низа ако си сакал само метод кој ги зема во еден аргумент. Да, прашање. Публика: Дали и NSUInteger и NSArray аргументи дека може да се земе во во NSArray? RHED Ши: Да. Значи, дозволете ми да објаснам. Па, да. Значи, прашањето беше се NSUInteger и NSArray * типови на аргументи, и тоа е точно. Значи, вие секогаш сакате да одредите што типот на вашиот аргумент е. И тука, јас се обидувам да те запознаам на некои од синтаксата и vocab на Objective-C, па оние кои се вистински видови дека ќе се занимаваат со. И како што ќе забележите, низи веќе не се, на некој начин, едноставна заграда работи. Тие се објектите. Иако, ако одиме на следниот слајд, можеме да видиме дека можеме да тешко код на NSArray во Objective-C со едноставно симбол на пред на голема заграда. Јас не сум, всушност, сосема сигурен дали Јас синтаксички хард-кодирани низа правилно за верзија С, но тоа е би требало да биде во низа С. Значи, ова е како ќе знаеш, можеби ги користите функциите или методи со кои ние направивме порано. Нели? Значи, ова е местото каде што ние го објавиме нашиот функција и нашиот метод. И сега ние сакаме да ги користите во нашата програма, а тоа е како ќе го направи тоа. Значи, во C, вие ќе треба, знаеш, можеби, bool б, и ќе го наместите на се изедначи со функција, а потоа ќе помине во аргументите. Во Objective-C, тоа е прилично многу истото. Имате NSArray * my_array, а тоа е ќе се изедначи - сега, само Разликата тука е овој објект работа, што сум нагласени во жолта, и како што можете да видите, во C, има нема друг жолта збор. И тоа е затоа методи припаѓаат со одреден објект. Па тоа е причината зошто јас треба да имаат некој предмет дека, на некој начин, го нарекува овој метод на број нула, а потоа на NSArray a, b, c, d. Било какви прашања за тоа? Ќе видиме овие концепти во акција наскоро, кога ќе одиме во демо. OK. Сега, сакам да се зборува малку накратко за Xcode 5, кое е интегриран развој на животната средина дека ќе се работи со. Знам многу од вас, или некои од вас, немаат Macs, што е проблем бидејќи Xcode не е достапна за Windows и компјутер. Не прашувај ме зошто, но веројатно - Да, корпорации. Сеедно. Но во секој случај, па, јас се извинувам ако некои од вие не мора да преземете некој вид на виртуелната машина за Mac во цел да се кандидира Xcode 5. Но тоа е прилично Вешта софтвер да се користи. И така, пред да нурне во било кој вид на демо, јас само сакам да ви покажам слика на она што Xcode изгледа во вашиот прозорецот, а потоа, исто така, зборува за што целиот овој простор е. Значи, тоа е нешто како учење како да се користите Microsoft Word, освен дека сакате да го се запознаат со сите различни работи кои се случува тука. Значи прво, сакам да ви точка на лентата со алатки на врвот. Ќе видите дека, на врвот, ќе имаат името на датотеката - или, всушност, вашиот проект име а потоа го вашето име на датотека. Да се ​​забележи на игра и на гости копчиња. Тие се оние кои ќе бидат користи за да се кандидира на вашиот стан на симулатор - симулатор iOS. Ова автоматски доаѓа со Xcode 5, па вие не мора да се грижите за симнување на некои вид на симулатор. Само притиснете игра и потоа бега вашиот стан. И можете да се позанимавам со вас, и ќе видите како таа работи подоцна. А потоа, во центарот, се разбира, е каде што сите ваши убави кодот е ќе одат. А потоа, од левата страна, да ќе има ова, на некој начин, папка - навигација - а потоа, исто така, ќе видиме дека, заедно со папката икона, постојат куп други икони таму дека ќе биде корисно подоцна. И тогаш, на десната страна е алатката област каде што може да работи со некои од предметите и да го одредите, можете знаете, она што на боја треба да биде, она фонтот треба да биде, и така натаму. Иако, сето она што го правите во Нови област, можете да прават во кодот, како и. И така, јас ќе се случува преку два примери на користење, едноставно, нема код на сите - или многу минимален број - стиховите сите код, само така што вие момци знаете што може и не може да се направи во Xcode и Objective-C. А потоа, конечно, долу на дното, имате debug област. Значи, вие не мора да се кандидира GDB, и така натаму, на вашите програми. Тоа автоматски го прави тоа за вас. И ти исто така може да печати работи во оваа област. Па така всушност, подоцна, ќе одиме преку mario.c, ако вие момци уште се сеќавам дека, во Xcode. Така што треба да биде забавно. А потоа, само за да го вратам во Objective-C, сакам да се потенцира она што можете да го направите со ако изјава. Па, знаете, бидејќи Objective-C е супермножество на C, сè што го правите е, буквално, исто како и C. Можете само имаат мали разлики. Значи, вие ќе забележите форма за ако изјава е сепак иста - имате ако, а потоа ќе мора загради со состојба во внатрешноста на,, а потоа тркалезните загради за она што сакате да направите внатрешноста на таму. Сепак, сакав да се стави овој слајд до тука, едноставно да се илустрира дека, бидејќи ние сме се занимаваат со предмети сега, ние ќе мора да ја користи овие работи нарекува како, е еднаков на низа, која е случајно, метод на низа или NSString објект. Значи, зборот, во овој случај, е NSString објект, и има метод наречен е еднаква на стринг, и тогаш ние поминува во хард-кодирани стринг за да се види дали тие се еднакви еден на друг. Било какви прашања досега? OK. И, сакам да одам во текот А за изјавата, исто така. Така, на пример, ако сакаме да се јамка во текот на должината на низа во C, овој треба да биде запознаен за вас. И, во Objective-C, јас сакам за да се потенцира тоа, на некој начин, метод наречен брои. Па, всушност, дозволете ми само се земе дека назад. Брои е метод на низа. Сепак, тоа е повеќе конкретно на сопственост на низа, која е причината зошто можете да го користите точка нотација. Но не сакам да навлегувам во премногу оваа концептуална работи, јас само сакам да ви покаже како работите ќе изгледа како и во Objective-C наспроти Ц И, исто така, сакам да истакнам дека иако сум бил со користење NSUInteger пред сите мои јас во Objective-C, исто така можете да го користите int, int, бидејќи е целосно валидни во Objective-C, исто така. Да? Публика: Дали е тоа само стилски, или - RHED Ши: Да. Значи, како што ќе видите - Значи, прашањето беше дека само стилска прашање. Како што ќе видите, имам, вид на ѕвезда ѕвездичка нешто одредување на дното, и дека врската ви носи кон Стак прелевање форма, каде што некој објаснува разликата помеѓу int во NSInteger и NSUInteger. И така, можете да прочитате за тоа подоцна. Овие слајдови ќе биде, се разбира, достапни за вас. Ајде да видиме. Добро, страшни. Значи, ова е исто така вклучени во слајд затоа што мислев тоа беше голем веб-сајт кој се воведува да Objective-C синтакса. Така, всушност, зошто не одиме на Хром и проверете го овој веб-сајт? Во право. Значи, она што сакам да ви покажам момци тука е оваа слика. Значи, ова е, на некој начин, ќе биде она што си оди за да се види внатрешноста на било Xcode датотека. Всушност, зошто не можеме само да потрае момент да, на некој начин, ја искористам оваа внатре Значи, оваа книга - тоа е објект кој ние сме се занимаваат со. И тогаш, тоа е очигледно ќе биде наследена од некој друг објект, но вие не мора да се грижите за тоа. И тогаш, тоа, можеби, има некои земји променливи. Важно сакам да ви покажам е методи пример, тука. Значи, на пример методи се означува со овој минус. И тогаш, како што ќе забележите, ние сме веќе почнуваат да се види на парадигмата за метод декларација, нели? Типот возврат, името на методот, и тогаш типот на аргументот, и тогаш името на аргументот. И ова минус значи дека тоа е пример метод, што значи дека овие методи се достапни само на објектите што се инстанцира. Да и се спротивставиме дека, методи со плус знак пред нив се класа методи, што значи дека можете да се јавите овие методи, дури и ако немате објект сеуште замислен. Значи, за чист пример, NSString е класа. И можете да се јавите, на пример, класа методи на NSString - вистинските, како, збор NSString. Меѓутоа, со цел да ги користат овие методи, вие всушност треба да се создаде низа. На пример, NSString ѕвезда низа еднаква на на знакот за цитирање, Здраво светот. И тогаш, можете да ги користите овие методи - пример методи - на тој Здраво светот стринг. Значи, тоа е разликата помеѓу пример методи и класа методи. А, ние само покриени овој дел. Својства се уште една работа што се внатрешноста на објекти, во основа. И ќе ги прогласи со на на имотот клучен збор. Имате овие опции, тука, дека јас ќе објаснам подоцна кога одиме во демо. Да? Здраво. ПУБЛИКАТА: Може ли да зумирате, ве молам? RHED Ши: О да. Жал. ПУБЛИКАТА: Ви благодарам. RHED Ши: Тоа треба да биде многу подобро. Публика: Да. Ви благодарам. RHED Ши: Да, ве молиме ме потсетува ако Заборавам да зумирате или одзумирате. Значи, ова е за сите што сакав да ви покаже за - Леле, тоа е многу - за овој веб-сајт. Значи, ајде да се вратиме на нашите слајдови. Всушност, сега да се земе еден миг да се нурне во демо. Значи, ние ќе започнеме со нови Xcode проект. Значи, ако ќе се отвори Xcode на сите Вашиот машини, тоа треба да ви биде потребно извесно страница, каде што вели, како, или во отворена до постоечки проект или нова проект, а вие треба да кликнете на нов проект. И тогаш, тоа треба да биде да овој екран. Да? Публика: Ако не го имате Mac, ние само вид на студ? RHED Ши: Или се погледне на со некој, да. Да. Можете да се разладите, исто така. OK. Значи, она што ние ќе треба да се направи првата, сега, е, всушност, ние ќе треба да се направи еден поглед апликација. Значи, ако ќе забележите, што е одлично за Xcode и Apple поддршка за програмерите е дека имате многу Шаблони за да работи со веќе. Можете да, на пример, да направат господар детал апликација. Можете да направите игра - и всушност, јас нема да одам во игри, бидејќи игрите се друга приказна за iOS развој. И тие се вид на посебна, па јас не би навлегувал во тоа. Потоа, мора страница со седиште во апликации. Имате табот апликација - Значи како, на пример, Банката на Америка веројатно има, како, јазичиња стан. Тоа е оние каде што ќе имаат копчињата на дното. И тогаш, имате самовила Комплет игра. Или можете да работите од нула, што е она што ние ќе направиме подоцна. Но, ајде да, прво, почнете со еден поглед апликација. Потоа, тоа ќе праша за името на производот, а ние само може да се направи тест. Името на организацијата - Значи, името на организацијата, Компанијата идентификатор - тие се важни ако си оди да го стави вашиот стан на App Store. Освен тоа, кодот е нема да се кандидира апсолутно чисто без оваа. Ова ќе биде важно ако сакате - така, само по себе, како, стави вашиот стан на вашиот телефон или нешто, и тест тоа надвор, знаеш, во реалниот живот - ова ќе биде важно. Оваа тенденција да обично се поврзани со некој вид на инвеститорот сметка со Apple. И така, знам, веројатно, многу од вас нема да има никакви инвеститорот сметки. Знам дека Универзитетот има еден. Мислам дека CS има една. Но, можете да ми мејл и ќе се обидам да дознаам што за вас. Но, токму сега, јас сум само се стави во некои случаеви работи тука. И можете да, се разбира, тука, изберете дали сакате да биде исклучиво во iPhone-от, во iPad, или и двете - универзална примена. Значи, сега за сега, ајде да направиме универзален, само за да го видиш двете страни на платформа. Ајде да видиме. Значи, токму сега, јас ќе одам да се спаси тоа во некој вид на папка. Не е важно каде - ќе секогаш може да се движи подоцна. И, сега, ние се донесе на нашата Xcode проект. Јас не би се грижи за сето ова. Јас не би предложиле допирање било од ова, освен ако знаете што точно што го правиш. Значи, сето ова, едноставно игнорирајте во најголем дел. Вие не ќе треба да го допрат, и ако дали се плеткаш некои работи тука, тоа добива малку незгодно. Значи, зошто да не се погледне во датотеките на лева страна во нашата навигатор. Тука, имаме AppDelegate.h. Имаме AppDelegate.m Значи, како ќе известувањето, ние сме насловот датотеки, кои заврши во точка ж, и ние имаме имплементација - всушност, дозволете ми да зумирате внатре OK. Дозволете ми да зумирате внатре Право, па имате насловот датотеки и имате спроведувањето датотеки. Всушност - OK. Ова е малку чудно, но носат со мене. Потоа, бидејќи ние ја одбрале еден поглед апликација, ние ќе треба да биде работа со сценариото. Значи, сценариото е нешто што на Apple излезе со навистина да им помогне програмери брзо прототип нивните апликации. Значи, ова е местото каде што можете да креирате стан без да пишувате една линија од код. Меѓутоа, во нашата еден поглед апликација, ние, се разбира, имаат поднесе барање за наше мислење, кое е поглед контролер. Значи, имаме насловот и имплементација датотека, тука. А, јас ќе одам да одзумирате, бидејќи сега ние ќе мора да работат во сценариото. Значи, тука е нашиот поглед. Ако ние, едноставно, се кандидира на стан токму сега, таму не е многу возбудливо случува. Значи, вие ќе видите оваа бел екран. Во ред? И, во нашата комуналии област, можеме да додадете еден куп на различни нешта за него. Значи, кога си имаш работа со екрани во iOS, погледнете контролери се објекти кои капсулирало, на некој начин, вашите ставови. Значи, погледнете контролорот секогаш има имот наречен поглед. И тој став, обично, ги содржи, знаете, она што сакате да го видите на екранот. Па, добро, ајде да започне со ставање, можеби, можеби етикета. Значи, ајде да се стави етикета на таму - држи тоа во средината. Значи, сега дека јас сум кликнал на етикетата, јас може да оди во својства инспектор и да почне менување на вредноста. Ајде да го наречеме CS50 бои. А, јас, исто така, може да го промените фонтот. Така, наместо за правење на систем, кој е стандардно, можеме да направиме нов. Можеме да го промениме - знаеш, ultralight, да го 32. А потоа, можеме да ја направиме нашата кутија поголем. Публика: Дали мислите дека можете да зумирате во само малку повеќе, можеби? RHED Ши: Да? OK. Публика: Само да го допрете? RHED Ши: Ајде да видиме. Го прави ова дело? Публика: Само да го положат Xcode? RHED Ши: Секако. OK. Страшни. Публика: Етикетата под? Етикетата? RHED Ши: Што е тоа? Публика: Што паѓачката беше етикета под? RHED Ши: Значи, прашањето е, она што паѓачката беше етикета под? Тоа треба, едноставно, да биде под овде. Претпоставувам дека тоа е коцка работа. Но, обично, ова е стандардното - Јас сум само заоѓа тука додека не се најде етикета. Да. Па сега, ние имаме етикетата. Нека си го центарот. И Xcode ни дава упатства за центрирање објекти. Значи, сега да се кандидира на нашите кодот повторно. Таму ќе одиме. Значи, имаме CS50 бои. И сега, ајде да се стави копче таму, нели? Бидејќи ние сакаме да се направи оваа интерактивна. Значи, ајде да се стави копче тука. И ние ќе го наречеме ова копче "чешма тука да продолжи. "Ние ќе го центар, исто така, Всушност, тоа е веќе центрирано. Да. Значи, сега имаме едно копче. И ако трчаме ова, повторно, ние ќе да имаат убаво малку копче тука. И можам да кликнете на неа, но тоа не го стори ништо, бидејќи не сме го направиле ништо со копчето уште. Значи, ајде да се создаде уште еден поглед, нели? Значи, ајде да речеме дека сакате да го допрете тоа копче и сакам да одат во друга страница - уште еден поглед. Она што јас ќе одам да направите е, јас може да се создаде поглед контролор, нели? Сега ќе кликнете на мојот копче, а потоа, најважно е, јас ќе одам да кликнете - или - Да, притиснете контрола на мојата тастатура. Контрола. Кликнете на копчето, а потоа повлечете. Значи, се сеќавам да го држите копчето за контрола. Ајде да го направи тоа повторно. Значи, држете контрола, клик, и повлечете на она што сакате да го направите. OK. И сега, имам неколку опции тука. Јас може или им помогнам, или можам да направам Модална, или можам да направам сопствен. Притисни е само ако имате навигација контролер. Токму сега, нашата прва поглед контролер не е во внатрешноста на ниту навигација контролер. Значи, навигација контролер е оној кој ви дава копчето за враќање назад на на IOS стан каде што треба, знаеш, дека врвот, на некој начин, дебели бар - каде што може да се врати, или напред, и така натаму. Токму сега, јас не го имаат тоа. И така, тоа е зошто не можам да се направи притисок. Значи, јас кликна на притисни случајно, овде. И всушност, да се кандидира на кодот, и тоа треба да се сруши врз мене. Само ако го притискам копчето иако, па - во право. Значи, ова е лошо. И, како што можете да видите, тука, ние имаат порака за грешка. Значи, "Push segues може да се користи само кога извор контролер е раководен од страна на пример на графичката околина навигација контролер. " Така, бидејќи тоа не беше во внатрешноста на навигација контролор, Не можев да го направите тоа. Значи, токму сега, јас сум да се вратам на папка, ќе се вратам на сценариото. Публика: Што е за навигација контролор, повторно? RHED Ши: Значи, сега јас ќе ти покажам. Ајде да видиме. Значи, јас ќе одам да кликнете на ова гледиште контролор, а потоа јас ќе одам да си до производ - всушност, не, жал - уредник. И јас одам да одат во - всушност, не ќе кликнете на неа? Бр. Таму ќе одиме. Одам да одат нагоре во уредник, одат надолу за да го вградите во, а потоа навигација контролер. OK. И, мојата простор изгледа навистина неуредна, па ајде исчисти ова. Значи, сето ова е сценариото. И на овој начин - Добро, престани - Јас брзо може да се изгради нешто вака. И тогаш, сега можам да се вратиме, знаеш? Но, ова е вид на здодевни, нели? Значи, она што сакам да направите е да, не сакам да се направи, едноставно, во поглед контролер. Да речеме јас сакав да всушност направи маса погледнете контролорот, па можам да се стави во некои убави бои, во табелата. Значи, сега дека јас сум се стави во мојата маса поглед контролор, јас треба да се поврзе назад од ова копче за да го погледнете контролорот. Па јас треба да направите мојата контрола, кликнете, повлечете нешто повторно. И сега можам да направам притисок, бидејќи јас ќе ја вградите тоа внатрешноста на навигација контролер. ПУБЛИКАТА: Навигација контролер само Ви овозможува да се оди од место до место? RHED Ши: Да. Значи, повеќе технички, тоа е објект каде - така, во внатрешноста на навигација контролер објект, следи на низа. И дека низа има сите последователни видите контролери. Тоа е причината зошто, кога ќе притиснете назад, тоа се навраќа на претходната страница. Бидејќи навигација контролер објект, или кодот кој се грижи за овој објект, има низа што ги држи ги пратите на овие поглед контролери, и да потоа, знаете, постигнувања во поглед контролор и да ви даде вратам на претходниот. Значи, ова е технички работи, но - и јас ќе ви покажам подоцна во код, ако имаме време. Јас сум вид на работи надвор на време, но - Значи, со табеларен преглед, она што можеме да направиме е - Тоа е обично автоматски за да Динамички Прототип - ние ќе го Статични ќелии се направи, инаку ние ќе се се кандидира во некои проблеми. А потоа, да речеме јас ќе одам да имаат еден секција. Значи, делови е како - Ако некогаш сте виделе музиката стан, кога имате уметници, делови би биде А преку Z's - писмата - а потоа, знаете, на поединецот редови ќе биде имињата на уметникот. И така, она што е кул тука, е што можам да пристап до сите објекти во на мојот сценариото преку овој опаѓачкото мени, исто така. Значи, јас ќе одам да кликнете на мојот дел, и јас сакам, знаеш, можеби пет реда. И тогаш, во внатрешноста на секој ред, Сакам да се стави етикета. И јас одам да се јавите оваа сина. А потоа, сакам да се стави на графичката околина, можете знам, можеби за, како, малку кутија. Така што можам да се покаже на луѓето преглед на боја. И јас ќе се вратиш на имотот и промени таа боја да, ох, јас не Знаеш, ова еден. А потоа, информации, исто така, тука, кога имам додатоци, јас може да има многу на различни додатоци дека што обично се види. Индикаторот за откривање, детали, или Знак за штиклирање, или едноставно само детали. Значи, можеби можеме да направиме, како, откривање индикатор, на пример. И тогаш, зошто не можеме да ги преземат овие, копија ставете нив, и ги стави во следната табела ред. Значи, можеме да го наречеме овој Жолта. И јас можеби ќе мора да се прошири оваа. Ајде да стане жолта боја. И на овој начин, можеме да ја копирате ставете нашите патот надолу. Што беше тоа? Виолетова. Значи, овие се сите типични CS50 бои кои сте ги виделе во класа - всушност, жал - или на веб страната. Се надевам дека вие момци може да се види што правам тука. OK. Последен. Публика: Како го додадете ред првично? RHED Ши: Значи, прашањето е, како никако не можев да додадете ред првично? Отидов во оваа табела дел - или сепак можам изберете табелата секција - а потоа, тука, јас нема бројот на редови. И, дозволете ми да се надеваме дека тоа функционира. OK. Ајде да видиме дали тоа функционира. Ох, совршен, страшни. OK. Додека бев градење ми демо, некои работите не се усогласени, така, благодарност за аплаузот. Да. Значи, ајде да видиме. Ние ќе го прават овој девет само за да бидете сè - или всушност, ајде да претвори сите од овие во откривањето индикатори. А потоа, она што сакам да ти покажам, исто така, беше како јас може да се земе секој од овие маса редови и да ги комуницирате - ох. Бр. Ох. Исто така, сакам да ви покажам - тука, можам да се стави на насловот на мојот навигација контролор, нели? Така всушност, ќе забележите, веднаш штом ќе вградени ова гледиште контролер внатре на навигација контролер, гледаме оваа лента за навигација на врвот на нашата сценариото застапеност на цел контролер. И така, ова ни дава, како, визуелна, вид на, водич на нашите видливи на екранот. Ова е очигледно ќе биде лента за навигација. И она што сакате да го направите брзо, сега, се става во друг - па оваа табела погледнете контролорот што го направив од преземање на една од овие и влечење тука, и тоа е она што ми дозволи да брзо, навистина, создаде маса поглед контролер. Ако имаме време сепак, ќе види дека, програмски, тоа е малку повеќе слабо за да се создаде маса погледнете контролорот, бидејќи таму неколку методи кои се потребни за да, на некој начин, пишува со цел за на маса поглед контролер за да се прикажат правилно. Сепак, јас само сакам да ти покажам, сега, Еве пример за тоа, ако јас земам ова, на пример - Јас сум ставен во друга погледнете контролорот. И сега, да речеме сакам да се контролира alt мојата прва сини табелата, кликнете овде. И сакам да се јавам овој Сина. А потоа - ајде да видиме. Јас сум на став сега, и јас може да го промени позадина на сино. И така, известување, тука, оваа паѓачката мени, исто така ви дава хиерархија на сите на овие објекти. Така важна работа е да се напомене, тука, е дека сите овие нешта, тука - оваа табела погледнете контролорот, на маса поглед, табеларен преглед секција, табеларен преглед Мобилен - сите овие се објекти, во код. Па, знаете, на етикетата во моментов е под содржината поглед, и така натаму. Така натаму и така натаму. Значи, ако ние ја извршите оваа код, што треба да се види нешто - ајде да видиме дали ова - да. Значи, таму ќе одиме. Но, ако ние не го сторат тоа, ниту еден од овие други работи работата. Нели? Па само тоа некој работи. И, за доброто на време, јас нема одат во, знаете, ставање по други оние. И ова е крај на, вид на, сценариото - она што сакав да покажам вас за сценариото. И, имам работено надвор пример, всушност, токму овде. Значи, ова е сценариото дека сум направил претходно. Значи, како што можете да видите, ова беше мојата навигација контролер. Тогаш јас го имав мојот прв погледнете контролорот, потоа морав мојата маса погледнете контролорот, а потоа морав сите од овие - па претходно, правам нешто многу различно. Па, извинете тие работи. Јас веројатно ќе го исчисти подоцна, пред да Јас го испраќам на производство. Но, ако ние ја извршите оваа, ќе видиме дека сите опции се достапни за нас. Освен јас не направи позадини тие бои. Значи, убав едноставна апликација. Сега, ајде да се обидеме да се справи со овој програмски. OK. Значи, да го сторат тоа, ние сме само ќе за да започнете нов Xcode проект. Ние ќе го празно апликација направи сега, затоа што ние не сакаме да имаме сценариото. Значи, јас сум едноставно мене ограничување да не користите било кој од сценариото, како и празни апликација нема да ми даде сценариото. Ова е само за да се спречи себеси од измама. Ајде да видиме. Чекаат. Дали јас - Да. OK. Во право. Значи, тука, ние сме оставени со ништо друго туку код. Значи, дозволете ми да се движат овој прозорец нешто повеќе. Во право. Како што можете да видите овде, само датотеките ние сме дадени се AppDelegate.h и точка m, а ние немаме сценариото веќе. Значи, ако ние ја извршите оваа, ние се уште се случува да стигне до бело на екранот, фала богу. ОК - бел екран, но ништо друго. И, тука е важен дел. Ова е местото каде што дејството се случува. Во претходните верзии, има обично нема код овде, но сценариото суштина обезбедува кодот за овој дел. Јас нема да одам во детали за тоа како. И она што сакате да го направите сега е, ние сакаме да одат во тука, и ова малку простор започнува создавање на нашите стан повторно. Па - Да? Публика: Зум? RHED Ши: зум. Да, секако. OK. Ќе се пишува, па ова не треба важно премногу. OK. Значи, прво, не заборавајте сакавме да се создаде навигација контролор, нели? И, исто така, како што можете да ја видите тука, Xcode прави навистина одлична работа на авто-пополнување. Значи, како што ќе забележите, имињата на сè што се многу подолго од обично, но Xcode го исполнува во за вас. Па јас само да го притиснете Enter. Значи, сакам да се создаде интерфејс навигација Контролорот покажувач, и јас да го наречеме navigationController. Сега, што да правам сега? По ова знак за еднаквост, треба, прво, креирате внатрешноста на меморија. Значи, јас ќе одам да направите NavigationController alloc - Значи, ова е слично на Примерок, дека вие момци користи во C - и тогаш, јас одам да го иницијализира. Значи, тоа е навистина важно дека секој објект што ќе се создаде, вие сакате да alloc и иницијализира тоа. Што се случува да ја креирате и instantialize тоа внатрешноста на меморија, како и сега можете да го користите. Сите нели? Ако не го сторат тоа, вашиот објект го прави не постои, и ќе работи во еден куп на проблеми. И тогаш, сакам да се создаде поглед контролор, нели? Значи, сакам да се создаде UIViewController ѕвезда - Значи, сè е покажувачот во Objective-C, и јас ќе одам да направите нешто слично, тука - alloc, init. OK. А потоа она што јас ќе одам да направите е да, јас сум ќе - така, се сеќавам кога ние го сторивме вградување во навигација контролер? Ова е како да го направи тоа во код. Сте ќе треба да направите navigationController pushViewController - ПУБЛИКАТА: [нечујни]. Тоа ќе се случи за нас, или -? RHED Ши: О, да. Бр. Тоа ме сака подобро. Не, тоа ќе работат за вас, исто така. Значи, овие се сите методи. Па pushViewController е метод, и исто така, поточно, тоа е пример метод на графичката околина навигација контролер. Затоа што морав да се создаде мојата адаптери за навигација Контролорот ѕвезда, а потоа јас да го наречеме овој pushViewController на мојот специфичен пример на графичката околина навигација контролер. Публика: Дали ние треба да го стори токму збор, или пак веќе постојат за тоа? RHED Ши: Да, затоа што тоа е метод. Тоа е како функција. Тоа е како printf. Тоа е како scanf. Тоа е како strcompare. Освен тоа го знае она што можеби ќе сакате да тип, и забележувате дека таа секогаш ќе излезе со работите кои се законски дозволено за вас. Значи, ако ништо покажува тука, тогаш нешто не е во ред. Значи, pushViewController. Значи, сега, сакам да им помогнам на ми новосоздадените UIViewController, а потоа, анимирани - можеби не. Бидејќи ова ќе биде на прв поглед контролер. Мислам, дури и ако јас го направи анимиран, тоа најверојатно нема да се појави, бидејќи тоа е првиот екран. И се сеќавам на голема заграда. Значи, се сеќавам како ние се користи загради? И во внатрешноста на голема заграда, на објект повикува метод - така и нашата цел е навигација контролер, и методот е притисни погледнете контролорот анимиран. И да видиме како тоа трае два аргументи, и тие се разделени со, на некој начин, зборови, и дебелото црево. Значи, Objective-C се обидува да го направи тоа убаво и лесен за вас да се чита гласно - вашиот код - и да го имаат полу, на некој начин, да има смисла. Сепак, го прават токму тоа не е доволно. Дозволете ми да одзумирате сега. Го прават токму тоа не е доволно да се се добие она што ние мора да претходно. Па еве, ќе забележите дека постои всушност нема да биде било кој вид на бар, тука, нели? Нема лента за навигација, што значи дека ние се уште не сме го добиле. И ние може да го тестира дека надвор, исто така, од страна, можеби, промена на позадината на ViewController, нели? ViewController.background-- ах. Па, да видиме како ViewController немаа боја на позадина, иако јас сакаше да имате пристап до него? А тоа е затоа ViewController е контејнер за гледање. Значи, тоа има поглед на имотот, која тогаш има боја на позадината. И, можам да го поставите, вид на tediously, со повикување на боја на UIColor објект. Значи, најава тука, redColor е метод. Тоа е класа метод на UIcolor. Бидејќи јас не треба да се создаде вистинскиот пример за UIColor со цел да се јавите на метод на неа. Јас само, едноставно, го нарече од типот-како име. Јас, како и, тоа ги повика int, int ако имаше, како, метод за да се, на пример. И така, ако трчаме овој код, ние ќе забележите дека позадината е всушност, не црвено. Тоа е уште бело. И како можеме да се добие околу тоа е, забележите како таму е self.window. Тоа е, како, на крајниот контејнер за вашата апликација. Тоа е крајниот нешто што содржи сè што на екранот, за iPhone или iPad апликација. И, практично, self.window го има тоа својство се нарекува rootViewController. И дека ќе биде на покажувачот првиот погледнете контролорот внатре на вашиот стан. Значи, она што ние сакаме да го направите тука, сега, е да ја постави таа еднаква на нашиот навигација контролер. Нели? Бидејќи, технички, навигација Контролорот е нашата прв поглед контролер. Тоа следи од низа на други поглед контролори, и ние турна овој погледнете контролорот во таа низа во навигација контролер. Значи, вие не сакате да го направите тоа. Дека навистина не ќе ви помогнат. Сакате да го направите ова, ако си сакал да го стори навигација контролер, кој повеќето од вас веројатно ќе бидејќи ќе сакате да, на некој начин, имаат некој вид на, како, мени да се вратиме или некои почетната страница од пребарувачот да се вратиме, наместо празен екран. Да? Публика: Дали е тоа непријатно за да зумирате на - RHED Ши: Да. Па, да. Ова е кодот, и сега ајде да го пробате. Значи, таму ќе одиме. Магија. Значи, во ред. Ви благодарам. OK. Па сега, она што сакате да направите е - така, ние сме вид на ограничени, тука, нели? Ние потенцијално би можеле да се напише се што внатрешноста на оваа функција. Но, тоа не е како iOS развој обично се работи. Значи, она што ние ќе треба да направите е да, ние сме ќе создаде нови датотеки. Но, поконкретно, ние ќе се создаде уште Objective-C класа, или друг објект - класа и предмети се менливи тука. И, еве како можев, потенцијално, создаде една класа на У контролери. Значи, тоа е под-класа, како што ќе забележите, тука, тоа е под-класа на Адаптери погледнете контролорот, но можам го нарекуваат некое друго име тука. Јас би го нарекле CS50, јас може да се нарече ова гледиште контролор, јас може да се нарече ова бла поглед контролер - се што сакам. Ова е само име за класа. Сепак, тоа нема да биде важно затоа што, во суштина, она што јас го правам тука е, јас сум создавање на друго име класа. Значи, тоа ќе биде, како, некои вид на тип или некој предмет. Значи, тоа треба да биде малку генерички. Тоа нема да биде многу специфични. И, исто така, сакам да истакнам овие две опции. Бидејќи ние сме прави сé внатрешноста на код, понекогаш тоа е многу полесно да се донесе во интерфејс на датотеки, како што Јас буквално да drag and drop, како ние го сторивме порано со сценариото - знаете, етикета, or копче, или што било друго. И така, xibs се датотеки кои ќе ви овозможи да направи тоа, а вие треба да го поврземе ова гледиште контролер датотека. Значи, јас ќе одам да намерно не се провери ова. Обично јас ќе се провери ова, и ако јас само направив ова за iPhone или iPad, јас ќе се провери ова и едноставно имаат еден за, знаеш, iPhone или iPad. Но, бидејќи јас го правам универзална, јас ќе одам да се создаде две од овие подоцна. Значи, јас ќе одам да намерно Отстранете ова. Ова е исто така многу важно. А многу пати, јас сум имал грешки кога тоа не беше проверена. И така, очигледно, тоа не е датотека, вид на, како, вклучени или увезени внатрешноста на овој тест папка. И така, мојот код има апсолутно никаква идеја за постоењето на оваа датотека, и што предизвикува многу болка и часови на дебагирање. Но, само бидете сигурни дека тоа се проверува така дека, знаете, целта на овој датотеката е за оваа апликација. OK. Значи, сега ние направивме две нови датотеки. И овие датотеки изгледа прилично празна. И, всушност, да, исто така, продолжи на преку создавање на xib датотеки. Значи, претходно, јас бев во Какао на допир паѓачката. Сега, јас ќе одам да одат во пристап Интерфејс на допир, и како што можете да видите, јас може да се создаде на сценариото. Значи, дури и почнав со празен апликација, јас се уште може да се користи сценариото. Иако, станува незгодно во однос за тоа како сакате да се поврзете дека во кодот. Значи, јас нема да одам таму. Но, она што сакате да го направите сега е да се создаде изглед. И можете да изберете за iPhone или iPad. Како и обично, да го означи разлика - ако правиш универзална примена - можете или стави црта iPhone, или можете да направите Twiddly. Тоа навистина не е важно. Тоа е едноставно за вас да се разликува кој поглед е за кој уред. И така, сега гледам. Имам екран што може да работи со. И така, на пример, можам да се стави етикета овде, знаеш, и јас исто така може да се стави друго копче тука. Јас нема да се мачат менување вредностите тука. Но, она што е важно тука е дека сопственикот на датотеката - Значи, јас сум внатрешноста на iPhone поглед, iPhone xib датотека. И во овој навигација област или опаѓачкото мени, сакам да се оди на сопственик датотеката. И ова е навистина важен чекор тука. Сакам да се направи класа поглед контролор, така што ова xib датотеката е ќе треба да се поврзани со мојот поглед контролер. И нешто што го правам во внатрешноста на мојот поглед Контролорот програмски е ќе се одрази на тука. Значи, сепак, да се забележи дека - всушност, да се направи овој поглед позадина сина, на пример. Или зелена боја. И тогаш, па ако ќе забележите, назад во овој код, ова е местото каде се вративме во нашиот навигација контролер. Иако ние го сторивме тој чекор, тоа е уште ќе биде црвена, не зелена. И таму е причина зошто. Тоа е затоа што, кога ние inited нашиот поглед контролор, тука - Жал ми е, тоа е малку луд - кога ќе inited нашиот поглед контролер тука, ние го inited на општ тип UIViewController. Во ред? Па ние дури и не го стори со оваа класа. Значи се сеќавам, ова е како една класа сега. Тоа може да се смета како еден вид, само како UIViewController е тип. А со цел да го користам тоа, што ние треба да направите е да увезете - увоз ViewController - и, како што можете да видите, тоа autofills тоа за мене. Значи, ViewController - и сега, тука, можам да го промените ова UIViewController да ViewController. И сега, тука, јас може да се промени ова да ViewController. Ајде да се кандидира повторно. Тоа е уште црвено. И причината зошто тоа е уште црвено е затоа што - woah, што се случи таму? Сакавме да ја поврзете оваа xib датотека со погледнете контролорот. Меѓутоа, со цел да всушност не тоа, ние треба да одат во ова. И кога тоа го правиме на init, ние сакаме да се направи initWithNibName, а потоа ние сакаме да стори на низа View_iPhone, на пример. Можете да се игнорира пакет тука. И ова се случува за да се овозможи нас да, всушност - Ш о, има еден проблем. Во право. И така, има еден проблем, бидејќи во нашиот поглед xib датотека, имаме етикетата и имаме едно копче. Сепак, иако ние сме поврзани овие две, таму не е ништо во внатрешноста на ViewController.h или ViewController.m кои се рефлектираат оние копчиња или оние етикети. Значи, ние треба да се напише оние во што својства на погледот контролер. Значи, ова е како да се изјасни имотот. Таа ги зема во, обично, овие две опции. За целите на нас и овој семинар, Јас би рекол дека, општо земено, повеќето својства се nonatomic и да ја задржат. Ќе можете да прочитате од Google пребарување, знаеш, разликата помеѓу nonatomic и да ја задржат, можете знаете, Google или нешто. И Јас ќе ве однесе да, како, Стак Преливник, каде што луѓето ќе имаат одговори за разликите меѓу нив. Но, за сега, тоа е она што ние сакате да се занимаваат со. И ние сакаме да се направи адаптери етикета, ѕвезда, и можеме да го наречеме она што го сакаме. Можеме да го наречеме ова, знаеш, етикета. А, ние ќе се создаде уште една за копчето. И не заборавајте да го вклучите ѕвездичка, бидејќи ние се занимаваат со покажувачи доста насекаде во внатрешноста на Objective-C. Сепак, дека ќе уште не го реши на проблемот, како што можете да видите овде. А причината е поради тоа што, секогаш кога сакате да се поврзете со xib датотека етикета или копчето на програмата, или насловот и имплементација на датотека, сакаме да додадете ова парче код - штекер. Забележите дека тоа е клучен збор. И, штом ќе завршам пишување дека надвор, тоа треба да се имаат овие две кружници, тука. Обично, тие не се пополнува Не сум сигурен зошто тие се. Но, обично, ќе мора рачно да поврзете ги со одење на оваа страна на областа комуналните услуги. И така, токму сега, имам мојата етикета одбрани, и сакам да го повлечете овој нов референцирање излез на сопственикот мојата датотеката, и потоа кликнете на етикета. Па сега, конечно, оваа етикета е поврзани со оваа етикета. И оваа етикета е она што ние ќе треба да го користите програмски да го промени својот текстот, фонт, неговата позадина боја, итн. Значи, зошто да не го стори истото за копче? И како што ќе забележите, за копче, тоа е малку покомплицирано. Затоа што, мислам, си требал да притиснете на копчето, така што е се здобија со многу опции за тоа како корисниците можете да притиснете на копчето. А потоа, ќе видиме подоцна на тој можеме да се поврзете на нашиот кодот да се направи тоа работа. Значи, сега за сега иако, ние сакаме да се поврзете до вистинските копчето внатрешноста на нашиот код. Па ние да оди во нова референцирање излез, а потоа го копчето. Сега, ајде да се кандидира повторно. Ух ох. OK. Не знам што се случува тука сега. Стој. Само еден момент, тука. Всушност, зошто да не ги погледне во друг пример во интерес на времето. OK. Значи, тука е повеќе лесно подготвени пример за ViewController. Како што можете да видите овде, јас сум вклучен својствата за етикетата и копче. И тогаш, овој дел од кодот тука - овој IBaction - беше врска со ова копче тука. Па како што можете да видите овде, на допир во внатрешноста е поврзан со избор на наречен копчето притиснато. Значи, ние всушност може да оди преку движење повторно, овде, со преземање допре до Внатре и влечење до Сопственик датотека, а потоа кликнете на копчето притиснато. Сега, ајде да се кандидира нашиот код. Па сега, на ова копче сега работи и ќе не однесе до следната страница. И, во смисла на нашиот поглед контролор, ова е парче од код кој зеде нега на копчето притиснато. И важно е да се напомене тука дека Јас направивме уште еден тип на поглед контролер наречен маса погледнете контролорот. Значи, ова е слично да се врати во сценариото, кога ќе се влече една од овие табеларен преглед контролори во сценариото. Јас сум создавање на друг Покажувач на табелата погледнете контролорот, alloc и init-ИНГ него, а потоа прави само точка за навигација контролор, притисни ViewController, оваа нова viewController. И јас го поставите анимација да да, бидејќи сега внатрешноста на мојата стан, а јас сакате да всушност гледаат на анимација оди од почетната страница на маса погледнете контролорот. Публика: Дали се уште се грижите за собирање на ѓубрето? RHED Ши: Што е тоа? Бр. Значи, прашањето беше, дали имате да работат со собирање на ѓубрето? Значи, Xcode 4 имале како АРЦ, што е автоматски референца броење. И така, обично кога ќе почнете нова проектот, ќе се провери тоа, затоа што никој не сака да се справи со ослободи меморија и работи. Но мислам дека во Xcode 5, не постои дури ни таа опција на новиот проект. Значи, тој автоматски прави тоа за вас. Да? ПУБЛИКАТА: Можете ли да извезува PDF во вашиот сценариото? RHED Ши: Да, дефинитивно. Значи, сите овие ќе бидат вклучени во изворниот код, па вие момци можат да проверат вистинските Xcode проект за тоа. Да? Публика: Но, мислам, како, можам да печати на PDF со мојот сценариото? Ако јас само сакате да ги изнесете на слики да се покаже некој. RHED Ши: Oh yeah. Мислам дека, можеби, можете само земе екранот. Да, и да ги испратите на екранот шут или нешто. Да. Значи, ајде да видиме. Во интерес на времето, мислам дека тоа е се што можам да ги покриеме денес. Но, знам дека е, всушност, само лебди над површината на iOS развој. Значи, Ве молиме слободно да ме контактирате доколку имате било какви прашања во врска со iOS развој. И, се надевам, ќе бидете во можност да се исчисти некои од код за извор код на датотеки, така што ќе имате некоја навистина убаво примери за да се работи со. Освен тоа, ако вие момци се случува на CS50 Hackathon, јас може или не може да не биде таму, и јас може да помогне со некои iOS развој, исто така. Значи, благодарение многу, момци.