[Powered by Google Translate] [Seminar] [iOS: Shkrimi Apps Ashtu si një Boss] [Tommy MacWilliam] [Universiteti i Harvardit] [Kjo është CS50.] [CS50.TV] Të gjithë të drejtë, të gjithë, të mirëpritur për iOS: Shkrimi Apps si një Boss. Ky seminar do të përqëndrohet në shkrim Apps per iPhone dhe nga ana tjetër me shkrim Apps për iPad, dhe kështu që ne jemi në thelb do të ecin nëpër disa shembuj të ndryshme se si të bëjnë një komponent, një lojë e thjeshtë si Tic Tac Toe, ose në qoftë se ju jeni më të interesuar në marrjen e një app si një lloj të lajmeve lexuesit apo diçka që ndërvepron me internet unë do të flas në lidhje me atë si të mirë. Ja axhenda tonë të shkurtër. Apps IOS janë të shkruara në një gjuhë të quajtur Objektivi-C, dhe kështu që kjo është pak e ngjashme me C, por jo të vërtetë në të gjitha, kështu që ne do të flasim pak për gjuhën e vetë dhe pastaj si për të ndërtuar Apps iPhone app duke përdorur këtë program të quajtur XCode, që nëse ju nuk e keni shkarkuar atë ende ndjehen të lirë për të filluar shkarkimin tani. Është gigabajt disa. Ajo duhet të jetë falas në App Store, kështu që ju do të duhet të ketë një Mac ideale drejtimin versionin e fundit të OS X. Nëse ju nuk jeni, nuk ka problem. Ne kemi Macs në qendër të shkencës në dispozicion për përdorimin tuaj me XCode instaluar, dhe kështu që të ndjehen të lirë të përdorin ato për zhvillim. Nëse ju doni të bëni një app, por nuk kanë një Mac, mos u shqetësoni. Ka shumë të burimeve kampus për këtë. Dhe kështu, atëherë ne jemi duke shkuar për të mbuluar 2 shembuj më të mëdha të Apps të ndryshme ju mund të bëni. Objektivi-C është teknikisht atë që quhet një grup super të C. Kjo do të thotë që çdo kodi C është gjithashtu e vlefshme Objektivi-C kod. Kjo do të thotë se ne lloj i gypit regjistruar në disa karakteristika të tjera për C. Disa nga këto karakteristika nuk përfshijnë pasur nevojë të shkruani ndonjëherë malloc përsëri, falënderoj Perëndinë, nuk ka pasur nevojë të shqetësuar në lidhje me këto pointers budalla dhe çlirimin e tyre dhe të gjitha këto gjëra ju urryer rreth C, dhe kjo është lloji i ikur në Objektivi C-. Tani, Objektivi-C ka edhe një bibliotekë shumë të madhe standarde, kështu që nuk ka funksionalitet shumë më tepër që ju të merrni për brenda e lirë të Objective-C. Kujtohet kur ishim shkrim PHP kemi vërejtur se kemi shkuar nga kjo gjuhë e vogël në bibliotekë gjigande të gjitha këto gjëra të çmendur që ju mund të bëni. E njëjta gjë ndodh në iOS. Ka objekte për gjëra të tilla si kalendar budiste, dhe me të vërtetë asgjë ju ndoshta mund të mendoni ndoshta ekziston tashmë në zbatim Objective-C-së. Pjesa Objektivi i Objective-C është referenca diçka quhet object-oriented programimit. Kjo është lloj i një koncepti të ri, por në të vërtetë ne kemi mësuar më së shumti një shumë prej këtyre koncepteve tashmë. Ideja prapa Object-oriented programimit është se ju jeni do të strukturohet një shumë të kodit tuaj rreth këtyre gjërave quhet klasa, dhe këto klasa janë përlëvduar vërtetë structs. Brenda një struct ne thelb tha se këtu është një gjë, dhe kjo gjë mund të ketë anëtarë. Për shembull, një nyje në një listë e lidhur mund të ketë gjëra të tjera si një vlerë, një tregues për nyjen e ardhshëm në listë, dhe së bashku se treguesin dhe që vlera e përbërë këtë rast një nga një struct. Klasët janë shumë të ngjashme, përveç klasa gjithashtu mund të ketë funksione brenda prej tyre. Kur ne shpalli një struct, ne vetëm mund të themi n int ose * nyje tjetër. Tani me Objektivi-C ne mund të vërtetë vënë funksione brenda nga këto gjëra. Një tjetër gjë që mund të bëjë klasa është se ata mund të trashëgojnë të dhënave nga klasat e tjera. Për shembull, ne do të jetë në kërkim në një bandë e ndërtuar në Objektivi-C klasa. Një prej tyre mund të jetë klasa që përfaqëson pikëpamjen për një ekran, dhe kështu duke thënë që unë dua për të zbatuar pikëpamjen time ne thelb thonë në Apple dikush mbi njerëzit, ndoshta me të vërtetë e bukur, shkroi këtë klasë për mua, dhe ajo merret me gjëra të tilla si butonat shfaqur ose pasqyrim ekran, dhe ne do të jetë me të vërtetë i mërzitur për të zbatuar të gjitha funksionet që veten, dhe kështu nga thjesht trashëguar të dhënave mund të themi gjithçka që ju bëri në atë klasë Unë gjithashtu dua brendësi të klasës sime, dhe atëherë unë jam duke shkuar për të bërë disa gjëra të tjera, domethënë të zbatojë një app. Kjo është ajo që trashëgimia të thotë fjala. Ne do të shohim një shembull më konkret. Dhe së fundi, me kyç Object-oriented programimit është që ajo çon të dhënave encapsulation. Në disa prej problemin tonë përcakton ne mund të kemi këto të mëdha, variabla globale Globals dhe kudo, dhe kjo është se si ne do të mbajnë gjurmët e shtetit. Me klasat ne mund të fillojë encapsulating informacion brenda e një objekti. Në qoftë se ne kemi një ekran në app tonë, ne vërtetë nuk duhet të ketë asnjë të dhënë nga një tjetër ekran në brendësi tonë app të kësaj, dhe kështu me encapsulating gjëra brenda klasave ky fakt çon për dizajn shumë të mirë të kodit, dhe kjo është e mundur me disa nga karakteristikat shtesë Objektivi i C-. Paralajmërimi, sintaksë për Objective-C është banane. Ajo është si asgjë që ne kemi parë më parë, kështu që është pak e një kurbë të mësuarit duke u përdorur për të Çfarë dreq do të thotë kjo? Por sapo ju të merrni kaluara se kurbë të mësuarit fillestar është e vërtetë, të vërtetë të qetë për të filloni të shkruani Apps. Të deklarojë një klasë, për të thënë këtu është klasa ime, ajo ekziston, dhe ndoshta këtu janë disa gjëra që unë jam duke shkuar për të përcaktuar më vonë, Unë jam duke shkuar për të thonë @ interface. Unë jam duke shkuar për të thonë @ interface. Unë jam duke shkuar për të dhënë një emër klasën time. Dhe pastaj më vonë diku tjetër unë jam duke shkuar për të thonë @ fund, dhe çdo gjë në mes interface @ @ dhe në fund do të jetë klasa ime. Që do të jetë ajo që është brenda e dosjeve. Tona h. Ashtu si në C. Tona h fotografi në thelb tha se këtu janë disa gjëra që do të ekzistojnë. Unë nuk jam domosdoshmërisht duke u thënë se çfarë bëjnë ata ende, por përpiluesit duhet të dinë se ata ekzistojnë. Më vonë brenda. Fotografi m tonë-sepse m për Objective-C po ku jeni në të vërtetë do të përcaktojë se çfarë bëjnë këto klasa. Shumë si fotografi. Tona c, kemi dhënë një zbatim për funksionet. Brenda. M dosjen tonë, ne jemi duke shkuar për të thënë këtu është ajo që të gjitha funksionet brenda klasës im atë-ata të gjithë bëjnë. Dhe së fundi, brenda një struct ne mund të themi brenda këtyre formatimin e teksteve kaçurrel int n ose nyje * ardhshme dhe në Objektivi-C ne jemi duke shkuar për të përdorur fjalen @ pronën, dhe kjo është ajo që do të përcaktojë vetitë, ose jo-funksionet që janë një pjesë e klasat e mia. Thirrja e funksioneve në Objective-C është gjithashtu banane. Kur ne shpalli funksionet në C kemi thënë diçka si int foo dhe të hapur prindërve dhe pastaj i dha atij një listë të argumenteve. Kjo është ajo që shpallja metoda ose funksione duket si në Objektivi-C. Nëse unë dua të deklaroj një funksion ose një metodë ku unë jam duke thënë është metodë me të vërtetë vetëm një funksion që është një anëtar i një klasë, kështu lloj i këmbyeshëm, por jo të vërtetë, kështu që brenda metodës sime unë dua të krijuar një metodë të re. Ajo do të kthehen asgjë, kështu që ajo do të jetë e pavlefshme lloji. Kjo është lloj rikthimi i funksionit tim. Tani ne kemi parens këtu, sepse-unë nuk e di. Ardhshëm do të jetë emri i funksionit tim, dhe pastaj në fund kemi një pikëpresje ashtu si kishim në C. Çka është e re këtu është ky djalë këtu. Kjo vizë është në të vërtetë e nevojshme, dhe çfarë thotë kjo është se kjo metodë këtu duhet të thirret në një shembull të një klase. Pasi kemi deklaruar structs tona ne ndoshta tha diçka si struct n nyjë, dhe që ka krijuar në fakt ose instantiated një nga ato structs mënyrë që unë mund të vërtetë të fillojë të punojë me atë që është në brendësi të saj, kështu që kjo do të thotë se ne dash duhet të ilustroj me shembull konkret klasën ashtu si ne instantiated se struct para se ne mund ta quajmë këtë metodë në të. Nëse unë dua të fillojë duke shtuar argumente për metodat e mia ajo merr edhe më shumë banane. Këtu është emri im metodë. Atëherë unë jam do të ketë një zorrë e trashë, zorrës së trashë dhe pas kësaj ai thotë se këtu vjen disa argumente. Kjo metodë merr një argument. Lloji i argumentit saj është një int, dhe emri i asaj argumentit ose variabël që unë jam duke shkuar për të filluar përdorimin e metodës brenda quhet i. Përsëri, kjo është metodë. Ajo merr një argument. Nëse ju doni të filloni duke shtuar argumente më shumë ajo merr më shumë banane në atë që ne kemi këtë zorrës së trashë që thotë se këtu vjen listën time të argumenteve. Ky argumenti i parë është një numër i plotë. Tani, ky argument i dytë është interesante. Variabli që unë jam duke shkuar për të përdorur në brendësi të funksionit tim është quajtur f, kështu që brenda funksionit tim unë mund të them f + = 1 ose diçka. Kjo gjë këtu është në thelb një çelës për atë argumenti apo parametër. Ashtu si kemi pasur çiftet kyç vlerë dhe diçka si JSON apo vargjeve associative Objektivi-C e mori vendimin për të thënë, në rregull, vetëm në mënyrë që ajo është me të vërtetë e qartë kur ju telefononi atë një metodë të gjitha këto parametra janë Unë në fakt jam duke shkuar për të përmendur të gjithë ata. Kur ju telefononi një metodë, ju do të vërtetë të them andFloat, dhe pastaj ju do të kalojë atë in Interesant, kjo nuk është emëruar, por të gjithë parametrat e tjerë janë, kështu që nëse kemi pasur një argument të 3 Unë mund të them andFloat dhe një tjetër noton dhe kështu me radhë. Kur unë e quaj këto metoda është i banane natyrisht, kështu që nëse unë kam një objekt, dhe unë përcaktuar një metodë të quajtur foo, dhe unë dua ta quaj atë, në vend se duke thënë foo hapur / ngushtë parens Unë jam duke shkuar për të hapur një parantezë. Këtu është emri i metodës sime. Unë jam duke shkuar për të mbyllur kllapa, dhe kjo është objekti që unë jam duke e quajtur atë në. Mos harroni, të gjitha këto metoda ekzistojnë brenda klasave sepse klasa mund të ketë metoda të përcaktuara në brendësi të tyre. Këtu kam krijuar arbitrarisht një objekt të disa klasë, dhe kjo është sintaksë për të bërë këtë. Ka 2 hapa për krijimin e një objekti. Hapi i parë është për të thonë se unë dua të ndajë hapësirë. Kjo është ekuivalente e një malloc. Ne nuk duhet të themi malloc më. Ne ra m, e bëri atë shenjat e, dhe zëvendësoi. C me. M. Pasi kemi diçka shenjat e ne atëherë duhet të nisja atë. Në thelb, kur ju krijoni objekte që ju mund të dëshironi që të ketë një logjikë që ekzekuton kur ata janë krijuar, kështu që ju mund të kalojë në disa vlerat default ose diçka të tillë, dhe kështu kjo metodë init është ajo që në fakt krijon objektin. Ne e parë ndajë hapësirë, ashtu si ne e bëmë në C, dhe pastaj ne nisja atë, e cila mund ose nuk mund të bëjë një tërësi shumë. Pastaj ne jemi të kthyer këtë gjë në një objekt o. Ka një yll këtu, sepse kjo është teknikisht një akrep, por mos u bëni merak, nuk janë pointers se një marrëveshje e madhe në objektivin C-anymore. Tani ne kemi instantiated këtë klasë e quajtur NSObject, dhe kjo është vetëm një klasë të rastit se Apple ka. Ne kemi instantiated këtë, dhe tani unë kam një shembull të kësaj klase në këtë o objekt, kështu që do të thotë se në qoftë se unë të përcaktuara këto metoda unë mund të telefononi ata si kjo. Në mënyrë të ngjashme, nëse kam kërkuar për të thirrur një metodë me një argument, kështu që kjo është metoda bar, që merr një argument, dhe këtu është Baz: Metoda qux, kështu që kjo merr 2 argumente. Kjo është quajtur një funksion në këtë objekt o. Kuptim? Sintaksa duhet të ketë kuptim, por ju lloj i të mësohen me të. Mirë, le të flasim për disa gjëra që janë ndërtuar në Objective-C që nuk janë ndërtuar domosdoshmërisht në C. Në C, ne lloj i duhej të merrej me vargjet si këto vargjeve karakter idiote, dhe ajo mori me të vërtetë i bezdisshëm. Objektivi-C ka ndërtuar të gjitha në ato për ne, dhe e ndërtuar në duke përdorur këtë klasë e quajtur NSString. Kur unë dua të krijuar një NSString kemi sintaksë më misterioze. Në vend se duke thënë se "CS50" Ne nuk themi @ "CS50" dhe kjo është vetëm sintaksë për shpalljen vargjet në objektivin C-. Kjo është jashtëzakonisht e lehtë të harrojmë, kështu që nuk e bëjnë. Tani, pasi unë kam këtë, kjo është një string, por njoftim kjo është me të vërtetë vetëm një objekt. Unë i thashë NSString, që do të thotë unë instantiated klasën quajtur NSString, që dikush tjetër ka shkruar për mua, dhe ata ishin shumë të bukur në lidhje me të, dhe kështu që tani Unë mund të filloni duke e quajtur metodat mbi të. Nëse unë e quaj gjatësinë metodë për këtë objekt s ajo do të kthehet tek unë gjatësinë e vargut. Kjo është vetëm si strlen në C. Kjo do të kthehej 4. Në mënyrë të ngjashme, një tjetër metodë që unë mund të duan të kujdesen për këtë është characterAtIndex. Kjo është një metodë që thotë se për këtë varg s Unë dua që ju të merrni karakterin 0, dhe kështu që kjo do të kthehet në mua c karakter, dhe ka një bandë e tërë më shumë nga këto metoda që ju mund të Google me të vërtetë lehtë. Dokumentacioni i Apple është i madh, dhe ne do të hedhim një vështrim në se në një grimë. Ata janë vargjet. Ne gjithashtu kemi vargjeve ndryshueshme madhësia ndërtuar in Kujtohet në C kur ne shpalli një sërë ne duhet të thonë se ju keni 5 elemente, fundi i tregimit. Kur ne mori të JavaScript dhe PHP ne mund të fillojë duke bërë gjëra të tilla si duke shtuar elemente ose duke lëvizur elementet. Ne mund të bëjmë të njëjtën gjë në Objektivi-C. Në vend se të krijojnë një rrjet në mënyrë normale C ne kemi përsëri një tjetër klasë e quajtur NSMutableArray. Ka gjithashtu NSArray, dhe kjo do të në thelb encapsulate disa koleksion. Kjo thotë se gjëja e parë që unë dua të bëj është që unë dua të ndajë hapësirë ​​për një grup të ri, dhe pasi kam ndajë atë Unë pastaj duhet të nisja atë. Përsëri, vetëm duke e quajtur këto 2 metoda. Tani kjo do të thotë se brenda këtij objekti një Unë kam një koleksion bosh ulur atje. Në qoftë se unë dua të shtoj diçka për këtë grup, unë mund të telefononi metodën addObject. Unë dua të shtoni një objekt në një grup, dhe unë dua të shtoj vargun CS50. Nëse kam kërkuar për të hequr anasjelltas që unë mund të them se unë dua të hiqni objektin në vendin e parë në grup, ose të kundërshtojë a. Kuptim? Mirë, ju lloj i të mësohen me këtë gjë katror kllapa. Nga rruga, brenda një shumë të bibliotekave Apple ju do të shihni këtë ns. NS fakt qëndron për hapin e ardhshëm, i cili ishte një nga kompanitë e para, Steve Jobs dhe kjo është ajo ku ai me të vërtetë filloi të shkruajë një shumë të kodit si lloj bazë për Mac OS X dhe të gjithë e sende të tjera, dhe kështu kjo NS është lloj i këtij legut këndshme bërtas jashtë tek një nga kompanitë mëparshme mbrapa kur Apple ishte parë duke filluar nga. Është kudo. Le të marrin një vështrim në një më Objektivi-C shembull shenjte. Këtu unë jam në brendësi të XCode. Për të marrë këtu, kam parë XCode shkarkuar nga App Store, hapi atë, dhe pastaj unë shkova deri këtu për fotografi, mbi këtu për projektin e ri, dhe pastaj. Pas bëj që kanë të gjitha këto opsione e asaj që unë dua të krijuar, dhe kështu që ne do të hedhim një vështrim në këto opsione vonë, por vetëm për këtë shembull, sepse ne nuk jeni në të vërtetë do të ketë një app ende, Unë kam ardhur këtu poshtë, dhe unë i thashë Command Line Tool, dhe kjo është një app që unë mund të kandidojë në command line ashtu si ne kemi qenë drejtimin nga C. Kjo është se si kam krijuar këtë projekt, dhe kështu që tani unë jam këtu, kështu që le të shohim të parë në këtë skedar, dhe kjo duhet të duket goxha e njohur. Unë kam një emër int. Ka argc shoku im, shoku im argv tjera. Dhe kështu që ne mund të shohim se kjo është pika e hyrjes për aplikimin tim të parë Objective-C. Këtu mund të injorojë këtë tani për tani. Kjo është në thelb një menaxhimi kujtesës gjëra që ju do të vërtetë nuk ndonjëherë kanë për t'u shqetësuar rreth. Le të shikojmë në këtë bllok të parë këtu. Kjo linjë e parë, në qoftë se unë them Student * alice = [[shenjat e Student] init] se çfarë është duke bërë? Ky nxënës të parë këtu, kjo është ndoshta një klasë të. Kjo nuk është një klasë që Apple ka shkruar, por kjo është një klasë që kam shkruar. Gjëja e parë që unë dua të bëj është që unë dua të ndajë hapësirë ​​për një student të ri, dhe pastaj unë dua të nisja atë, kështu që kjo i jep mua mbrapa ky objekt i ri student, dhe unë jam ruajtjen këtë në një ndryshore të quajtur Alice. Ku ka që vijnë nga klasa? E pra, mbi këtu në anën e majtë këto janë të gjitha dosjet e ndryshme brenda e projektit tim. Ne mund të shohim këtu kam një Student.h dhe një Student.m. Të. Fotografi h, mbani mend, është vendi ku unë deklaroj të gjitha gjërat që do të ekzistojnë brenda klasës. Le të marrin një vështrim në atë. Të gjithë të drejtë, këtu kemi këtë ndërfaqe @, dhe kjo thotë se këtu vjen deklaratat e çdo gjëje që do të ekzistojë brenda klasës sime. Atëherë unë kam një zorrë e trashë. Atëherë unë kam këtë gjë NSObject. Kjo do të thotë që zorrës së trashë pak trashëgimi që ne po diskutojmë pak më herët. Kjo thotë gjithçka mund të bëjë një NSObject ku NSObject është kjo klasë shkruar nga dikush tjetër, gjithçka këtë NSObject mund të bëjë unë dua të jem në gjendje të bëjë këtë. Duke thënë: NSObject që do të thotë se unë në thelb trashëguar të gjithë funksionalitetin e një klase tjetër. Që me të vërtetë më dha një bandë e tërë e metodave të ndryshme dhe pronat që unë mund të përdorni. Poshtë këtu unë jam duke krijuar 2 prona. Kjo do të thotë nxënës time, në qoftë se kjo ishte një struct, këto do të jenë 2 gjëra brenda struct tim, në mënyrë që çdo student ka një emër se është një varg, dhe një studenti gjithashtu ka një grade, cila është një int. Së fundi, këtu poshtë unë jam duke shkuar për të krijuar një metodë për nxënës tim. I quajtur metoda ime, initWithName, dhe kjo merr një argument, dhe se argumenti është një varg, dhe unë e quajti atë emër. Tani le të shohim se si ne fakt zbatuar këtë klasë. Këtu, tani unë jam në brendësi të. Dosjen time m, m për zbatim, I guess. Unë kam zbatimin tim, fundi im, dhe këtu është vendi ku unë jam në të vërtetë përcaktimin çfarë initWithName bën. Unë kam initWithName, emrin e parametrit tim, dhe pastaj ky është vendi ku unë jam në të vërtetë duke krijuar një student, dhe kështu që kjo është pak fshehtë, por kjo është lloj i Boilerplate që ju doni të përfshijë në ndërtuesve tuaj. Ky funksion initialization këtu, initWithName, është një lloj i konstruktorit. Ju jeni në thelb ndërtimin e një objekti të ri studentore dhe ndoshta dërguar disa të dhëna në brendësi të saj. Gjëja e parë që unë dua të bëj është që unë dua të thirrur init në këtë gjë super. Mos harroni se kur kam thënë përsëri këtu në dosje. H se çdo gjë ka një NSObject një student ka gjithashtu. Kjo do të thotë kur të krijoj një student që edhe unë duhet të bëni është sigurohuni që NSObject që unë jam trashëguar të gjitha këto të dhëna nga është initialized gjithashtu duhet. Ajo që unë duhet të them është kjo super është në të vërtetë do të referohen në klasë prind që unë jam trashëguar nga, kështu që unë dua të bëni të sigurtë që unë nisja çdo gjë që unë jam në varësi para se të filloni duke u përpjekur për të përdorur atë. Pastaj në qoftë se initialized saktë kjo është vetëm si duke thënë, nëse malloc nuk kthehen null atëherë unë mund të fillojnë vendosjen e disa pronave. Në JavaScript dhe PHP kishim kete fjalen e quajti këtë, dhe kjo referuar shkallës aktuale e një klase. Në Objektivi C-ne e quajmë këtë vetë. Kur them self.name, që do të thotë se objekti Unë vetëm krijuar, kur kam thënë shenjat e studentëve init, që do të më japësh përsëri një objekt. Kjo do të thotë unë dua të vendosur emrin e atij objekti për çdo gjë që unë vetëm kaloi in Ashtu si në C, ne qasje anëtarë me këtë pikë, kështu self.name thotë se emri i objektit të studentëve tani do të jetë çdo gjë që ju sapo kaloi in Dhe kështu në fund, unë mund të kthejë atë kështu që unë në fakt të marrë përsëri diçka. Pyetje? Mirë, kështu që ky vetë super = init, në qoftë se ju nuk e kuptoni plotësisht stuff trashëgimi mos u bëni merak. Vetëm e di se nëse ndonjëherë ju doni të bëni vetë metodën tuaj init vetëm ta bëjë këtë, dhe ju do të jetë mirë për të shkuar. Po. >> [Student] Çfarë do të thotë nëse vetë? Kjo do të thotë kur ne malloc diçka që ne gjithmonë të kontrolluar nëse ajo ishte e barabartë me null, dhe në qoftë se ajo ishte null, atëherë ne exited. Kjo është e njëjta gjë, sepse në qoftë se ky null kthimit, atëherë ne do të jemi me siguri faj Seg nëse ne filloni duke u përpjekur për të manipuluar atë. Kjo është klasa jonë student. Kjo do të thotë që ne mund të nisja studentët tanë në një nga dy mënyra. Nëse unë them shenjat e studentëve init unë nuk jam duke përdorur këtë metodë që unë vetëm shkroi, dhe në vend që unë thjesht mund të them alice.name, dhe tani unë jam duke shkuar për të vendosur këtë emër të pronës. Në mënyrë të ngjashme, në qoftë se unë dua të përdorin atë metodë initWithName Unë thjesht mund të them shenjat e, dhe pastaj në vend se duke thënë init Unë jam duke shkuar për të thirrur atë metodë që kam krijuar vetëm, dhe unë jam duke shkuar për të kaluar në Bob. Në këtë pikë, kjo Bob objekt ka një emër të barabartë me Bob. Mirë, këtu poshtë unë jam duke përdorur atë që ne NSMutableArray dukej në fillim. Unë jam ndarjes space.Then Unë jam Initializing një koleksion të ri. Unë jam duke shkuar për të shtuar 2 gjëra për të. Ky grup tani mban objekte të studentëve. Vini re se askund nuk kam për të thonë se kjo është një grup i nxënësve. I tha se është një koleksion, periudhë. Atëherë unë mund të vënë çdo gjë brenda atë që unë dua. Këtu kam 2 objekte. Së fundi, unë kam një tjetër objekt këtu, këtë TF. Mbi këtu në TF.h në thelb të njëjtën gjë. Unë jam trashëguar nga NSObject, dhe nga mënyra, kur ju krijoni klasa kjo është bërë të gjithë për ju, ky lloj i Boilerplate interface. Ajo ka një pronë të studentëve. Unë kam një çift metodat këtu se nuk mund të vërtetë të bëjë një tërësi shumë, dhe kështu që do të thotë pas kam krijuar këtë objekt TF Unë mund të telefononi këtë notë metodë në të si kjo. Çdo pyetje në Objektivi-C sintaksë para se të fillojnë të lëvizin në disa më shumë interesante Apps gjëra zhvillim? Mirë, kështu që le të bëjë në fakt një iPhone app. Klasat kryesore që ju do të jetë duke përdorur brenda të app tuaj iPhone janë quajtur kontrolluesit view, dhe një kontrollues pamje thelb paraqet një ekran të vetme brenda app tuaj, kështu që në qoftë se unë jam në app muzikë, për shembull, një kontrollues pikëpamje mund të përfaqësojë pikëpamjen në të cilën unë të parë të gjitha këngët në iPhone tim. Një tjetër kontrollues pamje mund të jetë kur unë klikoni një këngë dhe të fillojnë të luajnë atë ose si unë jam poshtë në shpimin e artistëve. Secila prej këtyre ekraneve të ndryshme mund të përfaqësohet si një kontrollues pikëpamje të ndryshme, dhe një kontrollues pikëpamje është me të vërtetë vetëm një klasë që thotë se ky ekran punon. Gjërat brenda një kontrollues pamje, ne do të ketë pronat, kështu që gjëra të tilla si një butoni do të jetë pronë e kontrollues tonë view. Ne jemi gjithashtu do të ketë metoda, dhe këto janë në thelb handlers ngjarje. Kjo metodë thotë se kur të shtypni këtë buton Unë dua të bëj diçka, dhe më në fund, përsëri, ne jemi duke shkuar për të përdorur këtë fjalen vetë për të hyrë në shembull aktual. Për të ndërtuar ndërfaqe në iOS është në të vërtetë me të vërtetë, të vërtetë e lehtë. Ata e kanë këtë zvarrit bukur dhe drop interface quajtur Interface Builder, dhe 2 Konceptet bazë që wire up C Objective-tuaj për Interface Builder janë IBOutlet dhe IBAction. Një IBOutlet thjesht thotë se në qoftë se ju të shpallë një pronë që është një buton, dhe ju doni të lidh atë deri në diçka në UI tuaj aktuale, ju jeni duke shkuar për të thonë se kjo është një prizë. Në mënyrë të ngjashme, në qoftë se ju doni të paraqesin një mbajtës ngjarje atëherë ju jeni duke shkuar për të thonë se kjo është një veprim. Që në fakt tela këtë paraqitje grafike dhe kodi juaj është e vërtetë, të vërtetë të thjeshtë. Nëse ju doni të lidhni një IBOutlet, të gjithë ju duhet të bëni është të klikoni ju kontroll, dhe ne do të shohim një shembull të kësaj të vërtetë të shpejtë. Ju kontroll klikoni ku ai thotë se Controller Shiko. Ju do të jeni të drag në interface, ose anasjelltas, në qoftë se ju doni të lidh një mbajtës ngjarje do të jeni të drag nga interface në drejtim tjetër. Le të marrin një vështrim në një shembull të vërtetë të thjeshtë iOS. Le të krijojnë një projekt të ri. Unë jam duke shkuar për të ardhur deri këtu për aplikim dhe unë jam duke shkuar për aplikim të vetëm klikoni View. Unë jam duke shkuar për të klikoni ardhshëm. Unë do të jap një emër projektin tim. Unë do të thërrasë atë Hello. Interesante, Apple supozon ju jeni duke krijuar një produkt në mënyrë që ju mund ta shesin atë dhe ata mund të bëjë para. Poshtë këtu unë jam duke shkuar për të thonë se kjo është një app iPhone. Ju mund të krijoni një app iPad, ose në qoftë se ju doni të krijoni një nga ato Apps që mbështet të dy pajisjet që ju mund të bëni atë shumë. Këto janë ato që ju doni checkmarks tuaj të duken si. Ju doni të përdorni Storyboards, të cilat ne do të shohim më vonë, dhe ju patjetër doni të përdorni numërimin automatike referimi, e cila është një karakteristikë e bukur që ju pengon nga detyrimi për të thënë malloc dhe të lirë. Nëse ju doni të telefononi malloc dhe të lirë, unë do të lënë këtë kontrolluar. Unë do të klikoni ardhshëm, dhe më në fund, kjo do të pyesni mua ku unë dua të të shpëtuar atë. Unë do të goditur të krijuar, dhe këtu ne do të shkojmë. I krijuar një projekt të ri. Mbi këtu në të majtë janë të gjitha dosjet që janë brenda projektin tim, dhe të vëreni se unë kam një bandë e tërë, dhe unë nuk e kam edhe të bëjë asgjë. IOS është e madhe. Për shembull, këtu këtë ViewController.h, kjo do të përfaqësojë parë kontrollues tim view, kështu ekranin e parë brenda të app tim. Tani ne e dimë se çfarë është duke thënë këtë. Ne jemi duke thënë se unë jam duke e quajtur këtë ViewController klasës, dhe një ViewController bën gjithçka që një UIViewController bën, dhe kjo, përsëri, është një klasë që Apple ka shkruar se ka shumë gjëra të dobishëm për ne si ekran ekran. Këtu është vendi ku unë mund të vërtetë të fillojë përcaktimin se çfarë kontrollues tim view bën, dhe kjo rezulton se unë me të vërtetë nuk kanë nevojë për asgjë nga këto. Ky është kodi Boilerplate se Apple jep mua për të lira. Unë nuk kanë nevojë për atë vijën e parë, ose unë nuk kanë një klasë, kështu që ne mund të shpëtoj nga kjo dhe të shpëtoj nga kjo. Mirë, kështu që kjo është ekranin tim bosh. Tani le të klikoni në këtë MainStoryboard.storyboard, dhe kjo është ajo ku fillon të marrë interesante. Kjo paraqet ekranin e parë në komponentin tim. Nëse unë dua të shtoni një buton, në HTML unë kam për të krijuar një tag button. Në Android ju duhet të krijoni një tag button, por në qoftë se unë vetëm iOS ardhur këtu poshtë në të djathtë fund dhe në qoftë se unë klikoni në këtë 3 here ku ai thotë se objekteve, dhe unë mund të lëvizni poshtë, ose unë mund të filloni të kërkoni për butonin. Dhe shikoni, një buton, kështu që në qoftë se unë në fakt të drag dhe drop këtë të drejtë atje, Unë kam shtuar vetëm një buton në këtë ekran në komponentin tim. Nëse unë dua të ndryshojë tekstin, unë mund të klikoni dy herë atë, thoni diçka joshës si "Shtypni Mua." Mirë, tani në qoftë se unë të drejtuar këtë app, kështu që ne hartojnë atë, mënyrë për të drejtuar atë klikoj butonin luajnë në të majtë të lartë, dhe ka app im. Unë nuk kam bërë asgjë, dhe kam marrë një app iPhone ëmbël në kërkim. Nëse unë dua të ndaluar atë, ju mund të klikoni butonin e ndaluar sepse kjo është më shumë argëtim. Le të thonë se unë në fakt duan diçka të ndodhë kur unë shtypni këtë buton. Për të bërë që ajo që unë duhet të bëni është që unë duhet të krijojë një mbajtës ngjarje te re ose një veprim. Kjo do të thotë se kam nevojë për të krijuar një metodë që unë dua të quhet kur shtyp butonin, kështu që le të krijojë një metodë të re. Unë jam në brendësi të ViewController.h. Unë duhet të them se ekziston një metodë. Unë kam nevojë për një vizë ndarëse të parë, sepse unë jam duke shkuar për të bërë thirrje në këtë kontrollues view. Unë kam nevojë për të dhënë këtë një lloj. Lloji i kësaj do të jetë se gjëja IBAction që pamë më herët. Kjo është një mbajtës ngjarje, kështu që ajo do të kthehet një IBAction, dhe kjo është një aluzion për XCode të them se kjo është diçka që unë dua të tela diçka për të. Unë mund t'i jepte një emër, si pikëpresje buttonPressed,. Tani unë kam deklaruar një metodë të re brenda të klasës sime. Unë e kam thënë këtë metodë duhet të ekzistojë. Tani le të vijnë në ViewController.m, dhe le të thonë se çfarë kjo metodë mund të bëjë. Nëse unë filloni të shtypni, për shembull, (i pavlefshëm) buttonPressed Njoftim XCode është me të vërtetë e bukur dhe autocompletes për mua. Kjo është me të vërtetë e mrekullueshme. Vini re këtu se në brendësi të file. M unë mund të them pavlefshëm, dhe kjo është për shkak se IBAction nuk është në fakt një lloj. Është fakt hashtag përcaktuar diku të jetë një pavlefshëm, dhe përsëri, kjo është vetëm një aluzion për XCode që thotë Unë dua që kjo të jetë një mbajtës ngjarje, dhe ne do të shohim se pse në vetëm një të dytë. Kur kjo shtypet butoni unë jam duke shkuar për të bërë diçka të bezdisshëm doja shfaqur një dritare popup. Për të bërë që unë mund të krijojë një shembull të ri të kësaj klase të quajtur UIAlertView, dhe kjo është një klasë që shkroi se Apple do të shfaq popups bezdisshëm. Ne do të quajmë këtë alarm popup, dhe unë kam 2 hapa, mbani mend, në krijimin e këtij objekti. Gjëja e parë që duhet të bëni është të ndajë hapësirë. Unë dua një UIAlertView. Unë dua të ndajë hapësirë. Kjo është metoda e ime e parë. Metoda im i ardhshëm është që unë dua të nisja atë, dhe kështu që unë kam këtë metodë të madhe, të gjatë të quajtur initWithTitle. Kjo është në thelb do të kontrollojë atë që ky popup thotë. Titulli i popup tim mund të jetë hello. Mesazhi i kësaj mund të jetë popup "Ky është iOS". Gjëja delegat, unë nuk e di se çka është. Le të thonë asgjë e saj. Tani buton që do të paraqitet mund të themi diçka si "Kjo është e sigurt," dhe unë nuk të vërtetë duan çdo butonat e tjera, kështu që le të fshini atë dhe të mbyllë kllapa. Mirë, unë krijuar një një shtesë. Nuk shkojmë. Kjo është se si unë mund të krijojë një popup re. Nëse unë dua që në fakt tregojnë popup unë dua për të thirrur metodën show. Për të bërë që unë mund të them vigjilent dhe të tregojnë, dhe përsëri, autocomplete ishte super nice. Nëse kam harruar atë që ishte, në qoftë se unë shtypur vetëm në S, Unë mund të lëvizni nëpër këtu për të kuptoj se çfarë ishte, dhe ajo filtron bukur. Tani unë krijuar këtë popup re. Ne do të kthehen në atë që i deleguari do të thotë më vonë, dhe tani unë dua të them se unë dua që kjo metodë të qëlluar kur shtyp butonin, kështu që unë jam duke shkuar për të ardhur përsëri në storyboard tim, dhe unë dua të bashkëngjitni tani këtë IBAction. Gjëja e parë që ju doni të bëni është të klikoni butonin. Kur unë shtypni këtë buton unë dua diçka të ndodhë. Unë nuk jam duke shkuar për të mbajtur kontrollin poshtë. Unë jam duke shkuar për të klikoni dhe terhiq nga butoni të gjatë këtu, ku ai thotë se Controller Shiko. Ne mund të shohim se ai dritat deri bukur. Në qoftë se unë le të shkojë me miun tim unë tani e kemi këtë popup gjatë këtu ku unë kam disa opsione. Një nga këto është se ngjarjet që unë mund të regjistrohen. Këto janë të gjitha ato që unë metodave të deklaruara në dosjen h tim si IBActions. Kjo është se si XCode e di se çfarë duhet të paraqitet në këtë listë të vogël, kështu që është vetëm një aluzion. Nëse unë klikoni mbi butonin presion, unë kam regjistruar tashmë mbajtës ngjarje. Në JavaScript ne kishim për të thënë: Unë kam disa kodin që regjistroi mbajtës ngjarje. Në Objektivi C-ajo ishte me të vërtetë e lehtë. Nëse unë drejtuar këtë përsëri tani kur shtyp butonin mbajtës im Ngjarja do të zjarrit, dhe unë jam duke shkuar për të marrë këtë popup. Super, super të thjeshtë atje. Nëse ndonjëherë ju doni të shihni të gjitha ngjarjet që ndodhin për t'u regjistruar në një komponent në qoftë se unë klikoni në këtë buton dhe kam ardhur gjatë këtu në anën e djathtë e parë që ju mund të shihni se këtu unë mund të bëjë gjëra të tilla si tipi i butonit, kështu që nëse ju dëshironi një nga ata që kam ose të butonit Shto kontakt apo çfarëdo. Nëse unë dua të shoh të gjitha ngjarjet që janë në këtë buton në qoftë se kam ardhur të gjithë rrugën gjatë këtu në anën e djathtë ne mund të shohim këtu në ngjarjet e kam të gjitha këto ngjarje të ndryshme. Unë mund të shtypni butonin, kur unë le të shkojnë e buton, kur unë dyfishtë trokitje e lehtë apo çfarëdo, dhe e kam regjistruar është vetëm kjo ngjarje quhet ndreq Brenda, dhe kjo thotë se sa më shpejt që gishti im vjen off button kjo ngjarje do të zjarrit, dhe kjo është pikërisht ajo që ndodhi. Kjo është lloj i ngjarjes butoni prezgjedhur presion. Çdo pyetje deri më tani? Mirë, kjo është se si ne mund të fillojnë të teli deri gjërat në kodin tonë në gjëra brenda ndërfaqes tonë. Mbani mend gjëja e parë që ne duhej të bënte ishte për të gjetur kodin, dhe pastaj ne Wired deri ndërfaqe për kodin, dhe ka app tonë të parë. Mirë, se ishte me të vërtetë e ftohtë, dhe ne kemi krijuar këtë buton. Çka nëse nuk bëjmë dëshironi të keni për të krijuar një bandë e pronave përfaqësojnë këto butona? Për shembull, në Tic Tac Toe kam 9 butona, dhe ajo do të jetë super, super bezdisshëm që të ketë për të drag and drop 9 herë ose në qoftë se unë kam për të bërë Tic Tac Toe me 81 në vend të 9 dhe unë kam për të drag and drop 81 herë, dhe kjo është çalë. Çfarë mund të bëjmë në vend është shumë si një HTML kur kemi pasur gjëra të tilla si kartat e identitetit dhe emrat dhe ne mund të kërkoni për gjëra nga ID e tyre, ka një nocion të ngjashëm në iOS quhet tags. Një tag është thjesht një identifikues unik numerike për një komponent. Nëse unë them këtë ka një tag 0 të, për shembull, në qoftë se unë të krijuar një buton dhe t'i jepte një tag të 0, dhe ne do të shohim se si të bëjë vetëm se në një të dytë, në qoftë se unë dua të të marrë atë buton unë thjesht mund të thonë se unë dua të thërrasë the viewWithTag metodën mbi objektin gjatë këtu, the self.view, e cila përfaqëson ekran aktuale, për shembull. Nëse unë e quaj atë metodë viewWithTag, unë jam duke shkuar për të tërhequr përsëri butonin me tag 0. Le të marrin një vështrim në këtë duke ndërtuar Toe Tic Tac. Së pari, kjo është Storyboard ime. Unë kam krijuar këto 10 butona UI. Vini re se ata janë të gjithë të njëjtën madhësi. Nëse unë klikoni një nga këto dhe unë vij përsëri mbi këtu në këtë anën e djathtë ju do të shihni kam rregulluar font drejtë këtu, kështu që kam bërë font pak më e madhe, por ajo që unë bëra ishte edhe kam vendosur këtë tag. Kam thënë se kjo ka një tag prej 1, dhe kjo është e majta e lartë. Tani, në qoftë se unë klikoni një buton, si ky këtu të dytë, tani ju do të shihni se tag im është 2. Secila prej këtyre butonave ka vetëm një kod unik, dhe kështu kjo është më vonë se si unë jam duke shkuar për të filluar bashkëveprojmë me app tim. Kjo është e gjitha në brendësi të një kontrollues view, por këtu është ajo që ne kemi. Ne kemi 3 prona këtu. E para dhe e fundit do të përfaqësojnë shtetin e bordit tim. Në thelb kjo i parë është një grup që përfaqëson ku Xs dhe Os janë. Kjo tjetra këtu na tregon të cilit është rradha. Ju do të vëreni se Unë gjithashtu kanë këto gjëra këtu. Para se kur kemi shpallur prona ne u dha atyre një emër dhe një lloj. Ne gjithashtu mund të japë atyre disa informata shtesë këtu. Kjo së pari thotë nonatomic, dhe çfarë thotë ky është në thelb vetëm një gjë ndonjëherë do të jetë duke u përpjekur për të hyrë në këtë ndryshore në një kohë. Ju mund të bëni kërkesat më komplekse që janë multi-filetuara, dhe kështu përsëri në Scratch kishim temat e ndryshme, dhe sprites të ndryshme mund të bëjnë gjëra të ndryshme në të njëjtën kohë. Nëse kjo nuk është rasti, i cili nuk është në çdo gjë që ne do të jetë në kërkim në, nëse themi nonatomic është e vërtetë do të bëjë gjërat pak më të shpejtë. Ne gjithashtu kemi këtë gjë të quajtur caktojë, të fortë, ose të dobëta. Kjo caktojë vetëm i thotë se kjo është një lloj standardi. Kjo nuk është një objekt ose një akrep, sepse kjo është vetëm një bool, kështu bool është ndërtuar në Objektivi-C. Kjo thotë nuk do të përpiqet të bëjë asgjë dashuroj me pointers këtu. Kjo është një scaler rregullt vjetër. Fortë dhe i dobët, i dobët këtë thotë se në fakt Unë dua që kjo të treguar diçka në kontrollues view. Unë nuk jam duke shkuar për të vërtetë apo të ndajë këtë init veten. Ndërtues interface, kur kam drejtuar app, do të trajtojë të gjithë initialization atë. Nëse unë them dobët, që thotë se dikush tjetër do të jetë krijuar këtë. Nëse unë them të fortë, kjo do të thotë që unë jam do të jetë një që është krijuar këtë objekt bordit, dhe kështu që këtu kam disa metoda më këtu, për shembull, një veprim për kur butonin lojë të re, kapet një veprim për kur ndonjë nga butonat tjera janë presion, dhe cetera et. Ne nuk do të merrni në shumë të logjikës së Tic Tac Toe, edhe pse kjo është shumë emocionuese, por le të marrin një vështrim në disa nga gjërat që ne mund të bëjmë në brendësi të iOS. Kjo metodë e re lojë do të jetë puna sa herë që unë shtypni butonin lojë të re. Që të lidh deri unë thjesht ardhur mbi të storyboard tim. Unë klikuar mbi lojë të re. Nëse kam ardhur mbi këtu për të drejtën që unë mund të shihni se Prek Up Inside është Wired me metodën newGame. Kjo është arsyeja pse kjo do të merrni shkarkuar. Metoda newGame do të bëjë disa ngritur. Ajo do të thonë se unë dua që ju të qartë gjendjen e bordit. Kjo është një metodë e mirë për ndryshueshëm vargjeve. Kjo do të thotë se tani është rradha e X, dhe tani unë jam duke shkuar për të përfituar nga kjo gjë viewWithTag. Unë e di që butonat e mi kanë tags 1-9, dhe kjo është diçka që unë kap në mënyrë arbitrare. Nëse unë dua të vendosur tekstin e çdo buton të jetë bosh sepse unë vetëm filluar një lojë të re dhe unë nuk dua asnjë Xs ose Os të mbetur unë mund ta bëjë këtë. Unë mund të them se unë dua mendimin me tag, 1, 2, 3, 4 cetera et. Kjo do të tërheqë një buton të ndryshme çdo herë. Këtu unë jam duke shkuar për të hedhur atë në UIButton. Ashtu si ne mund të hedhur në ints gjithandej dhe anasjelltas kjo do të thotë që unë dua për të hedhur këtë një UIButton. Kjo do të thotë lloj i kësaj do të jetë një * UIButton për shkak të pointers, por mos u bëni merak, ata nuk janë më të frikshme. Pasi unë kam këtë buton unë jam duke shkuar për të thirrur një metodë në të. Kjo metodë quhet setTitle forState, dhe kështu kjo do të thotë Unë dua të vendosur tekstin e butonit të jetë string bosh, dhe unë dua që ajo të jetë vargu i zbrazët kur ajo nuk është e shtypur. Në qoftë se unë jam duke përdorur këtë metodë, unë mund të ndryshojë tekstin e butonit sa më shpejt që dikush godet atë, por ne duam të themi kur butonin është vetëm ulur atje Unë dua teksti të jetë bosh. Së fundi, ne do të nisja bordit tim, dhe unë jam duke shkuar për të thonë se gjithçka që është aktualisht në 0, kështu që ky bord anëtarët pandryshueshëm është një grup i paqëndrueshëm, që do të thotë unë mund të telefononi metodën addObject dhe vetëm një 0 në brendësi të saj. Kjo është ajo që ndodh kur unë të krijojë një lojë të re. Le të marrin një vështrim në një tjetër. Kjo metodë këtu është IBAction që do të jetë e shtyrë çdo herë që një prej këtyre shesheve është i shtypur. Tani ne kemi disa logjika Tac Toe Tic këtu. Ne gjej cilit është rradha, dhe në bazë që ne as vendosur një X ose një O, por ne vërejmë se ne jemi ripërdorimin këtë mbajtës të njëjtën ngjarje për çdo një të vetme prej këtyre butonave. Kjo do të thotë se unë nuk kanë një metodë për butonin e majtë të lartë, një metodë të ndryshme për butonin e djathtë e poshtme, edhe pse unë mund të ketë bërë këtë. Kjo nuk do të jetë me të vërtetë dizajn të mirë. Ajo që unë jam duke bërë këtu është në fakt unë jam duke shkuar për të përcaktuar çfarë e tag butonin që u shtyp është. Ju vini re se kjo metodë luajnë merr një argument. Ajo që quhet dërguesin, dhe çfarë është dërguesi është dërguesi do të përfaqësojnë pikërisht ajo që është marrë veprim mbi të. Nëse unë shtyp një buton, kjo dërguesi do të jetë se UIButton se unë presion në fakt, kështu që do të thotë se kjo UIButton ka një etiketë, sepse unë krijuar një tag. Nëse unë dua të merrni në tag unë thjesht mund të them Unë dua tag e dërguesit, dhe përsëri, unë kam casted vetëm atë në një UIButton. Unë të ndodhë që të dini se dërguesi do të jetë një UIButton. Ajo nuk gjithmonë duhet të jetë një UIButton. Unë mund të, për shembull, regjistrimin e mbajtës të njëjtën ngjarje  për një buton për një, një për një slider. Në këtë rast, unë e di se ata janë të gjitha buttons, kështu që unë jam duke shkuar për të thënë Unë dua që kjo të jetë një buton, dhe pastaj unë mund të merrni tag, dhe nga tag Unë tani e di ku unë jam në brendësi të bordit. Atëherë unë thjesht mund të vënë ose X ose O, mund të rrokullisje të kthehet, kontrolloni që ka fituar, et cetera. Çdo pyetje në këtë deri më tani? Mirë, të gjithë kodin ne postuar online-ne nuk doni të merrni në shumë e logjikës Toe Tic Tac, por tani ju mund të shihni se me të vërtetë të gjithë ne po bëjmë është që ne jemi duke looping mbi këtë grup, kështu që ne kemi një çift të për sythe këtu, dhe ne jemi vetëm për të parë krahasuar nuk kemi një ndeshje në të gjitha rreshtat, një ndeshje në një kolonë ose diçka të tillë. Që në fakt të drejtuar këtë app, në qoftë se unë trokitje e lehtë në një nga këto butona Metoda që luajnë u shkarkua, kështu që do të thotë unë vetëm vënë button të jetë një X, kështu që tani ky buton do të jetë një O, dhe kështu me radhë, dhe kështu kjo është se si ne jemi duke filluar për të bashkëvepruar me këtë app faqe të vetme. Ne do të postoj kodin, kështu që mos ngurroni të lexoj se, por le të flasim tani për disa Apps që janë më shumë se vetëm një faqe. Si emocionuese si Tic Tac Toe ishte një shumë e Apps brendësi të iOS janë lloj i këtyre stërvitje poshtë gjëra me ekrane të shumta. Koncepti i parë që ne do të duhet të flas për protokollet janë, dhe një protokoll është thjesht një grup i metodave që ju mund të premtojmë për të përcaktuar. Nëse unë krijuar këtë protokoll të ri me 2 metoda, kjo e parë, qoftë lloji kthimi është i pavlefshëm, unë e quajti atë foo. Ajo merr asnjë argumente. Unë kam një tjetër metodë. Ajo kthehet një int. Unë e quajti atë bar, dhe kjo merr një argument. E gjithë kjo protokoll është se është quajtur SomeProtocol deri këtu, kjo është një grup i gjërave që dikush mund të zbatojnë. Unë nuk kam në brendësi të këtij protokolli, tha ajo foo bën. Në vend të kësaj, unë jam vetëm duke thënë se ju mund të përcaktojë foo nëse doni të. Nëse unë jam duke krijuar një kontrollues të parë ose duke krijuar një klasë Unë mund të brenda e atij premtimi për të zbatuar klasës disa prej këtyre metodave, kështu për shembull, në qoftë se thonë kjo tani thotë se unë jam duke e bërë një premtim për ju që brenda e kësaj klase kontrollues pikëpamje unë do të ketë për të dy përkufizimet foo dhe bar. Pse është se e dobishme? Një shumë e përbërësve brenda të iOS të përfitojnë nga kjo model dizajn quajtur delegacionin, dhe çfarë delegacioni thotë është se, për shembull, nëse kam një kuti teksti dhe ka disa ngjarje që mund të regjistruara brenda kutinë time tekstit, në vend se duke krijuar ngjarje të veçanta ajo që unë mund të bëni është që unë mund të them delegat i këtij kutinë e tekstit do të jetë një objekt. Kur unë them se ky është një delegat tani që do të thotë se kur disa ngjarje do të ishte gjuajtur në kutinë e tekstit në vend që të regjistrojnë atë apo diçka të tillë ajo është vetëm do të thërrasë një metodë për delegat. Për shembull, në brendësi të tekstit kutinë time unë kam një metodë për kur unë shtypni që bëhet butonin në fund të drejtën, dhe kështu në vend se regjistrimi mbajtës ngjarje ajo që unë mund të them është kuti teksti, këtu është një objekt që unë dua që ju të thërrisni një metodë për çdo herë që dikush shtyn butonin e bërë, dhe kjo do të thotë se që objekti ka për të zbatuar disa protokoll që thotë se unë premtimin për të përcaktuar atë veprim bëhet button, sepse në qoftë se ajo nuk përcakton atë metodë dhe ju shtypni bërë, atëherë ajo do të jetë konfuze. Le të marrin një vështrim në një shembull. Këtu unë thjesht kam një kuti teksti, dhe një nga vetitë e këtij kutinë e tekstit më shumë këtu në këtë anën e djathtë është delegat. Kjo është një pronë e klasës. Çfarë kam bërë unë këtu është kontrolluar klikuar dhe zvarritur unë nga ky vend gjatë këtu për kontrollues pamje, dhe që thotë tani delegat e këtij kutinë e tekstit do të jetë kontrollues pamje. Kjo do të thotë se kur disa veprime të ndodhë, në vend se regjistrimi handlers ngjarje të veçanta unë dua që ju të dërgoni ato në delegat. Tani le të marrin një vështrim në kontrollues tim view. Brenda e dosjes. H Unë kam bërë një premtim. Unë kam premtuar se do të zbatojë disa metoda në brendësi të këtij protokolli quajtur UITextFieldDelegate, dhe përsëri, kjo është vetëm një listë të disa gjëra që unë mund të zgjedhin për të zbatuar. Nëse unë vij këtu në. M dosjen time, unë kam zbatuar një metodë të tillë. Unë e kam quajtur atë textFieldShouldReturn sepse kjo është ajo që u quajt në brendësi të protokollit. Dhe tani sa herë që unë shtyp butonin e bërë brenda kësaj fushën e tekstit kjo është ajo që do të merrni të quajtur, kështu që unë nuk kanë regjistruar një mbajtës ngjarje. I lidhte delegat, dhe kurdo që kjo ngjarje është e qëlluar kjo është metodë që do të merrni të quajtur, kështu që nëse unë vij këtu për kalimin tim storyboard dhe drejtuar atë- ndërkohë që e ngarkimit ne mund të shohim atë që kjo e bën. Në ekranin tim kam 2 gjëra. Unë kam këtë fushë teksti, dhe unë kam këtë emërtim. Unë jam thjesht duke thënë se unë dua tekstin e kësaj etiketës të jetë e barabartë për çfarëdo përdoruesi shtypur në brendësi të fushën e tekstit. Kjo linjë tjetër këtu është thjesht një metodë që unë jam duke bërë thirrje në fushën e tekstit që thotë se unë dua që ju të fshehur tastierën. Kjo është vetëm metoda arbitrare që Apple zgjodhi. Përsëri, para se të kam bërë asgjë që unë duhej të tela çdo gjë, kështu që unë i parë erdhi mbi këtu. Nga kontrollues view Unë terhiq mbi kutinë e tekstit. I le të shkojë, dhe unë mund të shoh këtu që unë mund të bëjë këtë pronë fushën e tekstit pasi gjatë këtu në kontrollues view kam përcaktuar një pronë që është një IBOutlet i një fushë tekst. Kjo thotë se unë mund të tela këtë pronë deri në një fushë teksti në UI tim. Tani kur unë klikoni këtë unë mund të filloni të shtypni. Tani, nëse unë klikoni butonin e bërë këtë do të zjarrit një ngjarje që unë tani mund të përgjigjet për të. Asnjë handlers ngjarje. Kjo është se si unë vetëm iu përgjigj atij butonin bërë. Kuptim? Kjo nuk është një model i projektimit që, ju nuk mund të gjeni kurrë veten krijuar protokoll tuaj, por vetëm e di se disa komponentë të ndryshëm IOS regjistroheni ngjarjet në mënyra të ndryshme. Buttons, për shembull, përdorin ato IBActions. Fushat tekst, në anën tjetër, do të përdorin delegatë. Ne mund të shohim dhe ju mund të shikoni të gjithë që brenda deri të dokumentacionit. Nga rruga, nuk është në fakt një ton të gjëra UI ndërtuar në iOS për ju, kështu për shembull, mënyra kam bërë që thonë bërë në fund të drejtën po kam zgjedhur këtë fushë teksti. Unë kam ardhur këtu. Unë scrolled poshtë një grimë të kthehen kyç, dhe unë mund të bëjë në fakt kjo një bandë e tërë e gjërave, si në qoftë se unë dua të them se emergjente telefononi në vend që unë mund ta bëjë këtë, e cila është krejtësisht e rastësishme, dhe unë nuk e di pse ka një built-in thirrje emergjente button, por atje, ai thotë se thirrja urgjente në letra me të vërtetë të vogla. Nuk ju shkoni. Patjetër të shqyrtuar të gjitha këto opsione të ndryshme në iOS. Çdo pyetje për delegatët? Përsëri, vetëm një model interesant projektimit që ju duhet të jetë i vetëdijshëm. Mirë, le të ardhshëm të marrin një vështrim në pamje tryezë. Një pamje tabelë në thelb është se lista e artikujve që është në të gjithë vendin në iOS. Kur ju jeni Flipping nëpër të gjitha kontaktet tuaja, ju jeni duke kërkuar në faqja vendosjen, dhe se lloji i listës së gjërave është quajtur një pamje tryezë. Zbatimin e një pamje tryezë në iOS është shumë e thjeshtë. Në vend të bërë një klasë që zbret nga ajo UIViewController si ne kemi bërë para se ne thjesht duhet të them më tepër se gjithçka ka një UIViewController unë dua të bëj, Unë them gjithçka një UITableViewController nuk dua të bëj, kështu që thjesht shton disa gjëra të tjera që janë bërë krejtësisht për ne. Ne duhet të bëjmë shumë pak për të në thelb të mbushur boshllëqet në brendësi të tabelës. Në mënyrë për të shfaqur një tavolinë kam nevojë për t'iu përgjigjur disa pyetjeve. Pyetja e parë që unë duhet të përgjigjem është se sa seksione janë në tryezë? Kur ju jeni Flipping përmes kontakteve app tuaj, ju do të vëreni se kjo është lloj i organizuar nga Si, atëherë ju keni të BS, dhe ju keni atë header pak sub. Secili nga ata që quhet një seksion. Ju mund ose nuk mund nevojë për këto. Gjëja e parë që ju duhet të bëni është të zbatojë një metodë quajtur tableView: numberOfSectionsInTableView. Që thjesht kthehet sa seksione keni, kështu që kjo mund të thonë të kthehen një në qoftë se ju keni një pamje të madhe tryezë. Pyetja tjetër që duhet të dini iOS është se sa rreshtat keni? Për shembull, ju jeni Flipping përmes një pamje tryezë. Ju keni një numër të caktuar të këngëve ju jeni duke kërkuar në një numër të caktuar ose të kontakteve. Nëse ju jeni mua, sigurisht, nuk është se shumë, dhe kështu kjo është se si iOS e di se sa qelizat për të shfaqur. Përsëri, kjo mund të thotë diçka si kthim 3. Pikëpamja ime Tabela ka 3 rreshta. Së fundi, iOS nevojë të dini se çfarë çdo qelizë si duket, kështu që ajo që është e vërtetë do të bëni është të telefononi këtë metodë këtu poshtë, kjo tableView: cellForRowAtIndexPath. Ajo do të thërrasë këtë metodë në çdo qelizë të vetme brenda tryezën tuaj. Si e di sa herë për të thirrur atë? E pra, ju tha atë brenda e numrit të rreshtave në seksion. Ne jemi duke shkuar për të thirrur këtë në secilën prej qelizave tona, dhe brenda e kjo është ajo ku ju mund të bëjë në fakt gjëra të tilla si vendosur tekstin apo ju tregojnë se çka butonin blu pak në anën e djathtë bën. Model për marrjen e këtyre qelizave, ne jemi duke shkuar për të përdorur këtë metodë quajtur dequeueReusableCellWithIdentifier. Objektivi-C është në fakt shumë i njohur edhe për gjatësinë e emrave të tyre qesharake metodë, dhe kjo është me të vërtetë një rast i mirë në shembull pikë. Çfarë kjo metodë nuk është kjo vetëm thotë se unë dua që ju të jepni një qelizë. Vetëm një gjë e iOS. Nëse keni diçka si 100.000 këngë në iPod tuaj çfarë iOS nuk doni të bëni është të ndajë 100.000 qeliza, sepse në qoftë se ju jeni në krye të listës suaj, ju me të vërtetë duhet të siguroj kujtesë për qelizë që është 99.000 rreshtave poshtë? Jo, sepse, siç ju jeni Scroll ju mund të ndajnë lloj si ju shkojnë së bashku. Kjo është bërë për ju. Ju nuk duhet të shqetësohen për të gjitha stuff se performanca stupid. Të gjithë ju them është që ju e quani këtë dequeueReusableCellWithIdentifier metodë, dhe kjo do të thotë, në rregull, në qoftë se keni nevojë për të unë jam duke shkuar për të krijuar një qelizë të re për ju. Por nëse ju jeni në fund të tabelës dhe ju keni ndarë tashmë disa qeliza në krye të tabelës që ju nuk jeni të vërtetë do të duhet në çdo kohë së shpejti Unë jam duke shkuar për të ju jap një nga ato mbrapa në vend të ndarjes së një të re, dhe kështu që kjo është një shqetësim bukur performancës. Ju nuk duhet të ndajë qelizat veten. Kjo do të ju jap përsëri një qelizë. Ajo do të kthehet tek ju një objekt celular. Pasi të keni objekt celular ju mund të bëni gjëra për të. Ju mund të vendosni tekstin e qelizës me këtë pronë të quajtur emërtim tekst. Ju mund të shtoni atë shigjetën në të djathtë ose disa sende të tjera të rastit me këtë pronë tjetër të quajtur accessoryType, dhe kështu me radhë e kështu me radhë. Le të marrin një vështrim në të vërtetë zbaton një pamje tryezë tani. Kur kam krijuar këtë projekt në vend se duke thënë se kërkesë e vetme view Unë në fakt erdhi mbi këtu për master-detaje aplikimit, dhe kështu që në thelb kjo korrespondon me app postës në iPad me pamje tryezë në të majtë dhe pastaj përmbajtjen në të djathtë. Në iPod apo iPhone kjo do të korrespondojnë me një pamje të vetme tavolinë. Kjo është ku kam marrë kodin tim starter. Le pari të marrë një sy në storyboard. E gjithë kjo është bërë për mua, e krijuar në thelb. Ky bar navigacion tregoi mua atë që një qelizë shembull mund të duken si, dhe unë mund të klikoni dy herë këtë, për të ndryshuar titullin. Çdo shqetësime të tjera UI unë mund të trajtojë atje. File header duket me të vërtetë të thjeshtë. Në vend se duke thënë se kjo është UIViewController ne jemi tani duke thënë se kjo është një TableViewController, kështu që ne e dimë që ne duam për të thirrur të gjitha ato metoda tryezë. Next Unë dua të krijuar një pronë që është do të përfaqësojë gjërat brenda e tryezën time. Kjo tabelë do të shfaqin në mënyrë arbitrare një listë e frutave, dhe kështu që kam nevojë për të krijuar një rrjet të në të cilën unë mund futur fruta. Brenda dosjen time zbatimit gjëja e parë që unë dua të bëj është që unë dua të bëni të sigurtë që unë nisja këtë koleksion. Unë i thashë shenjat e init, e krijuar koleksion tim fruta, dhe unë jam duke shtuar 4 gjëra për të, njëri prej të cilëve është shumë më e diskutueshme se 3 të tjera. Dhe tani kam një rrjet të madhësisë 4. Ne jemi duke lëkundur atë deri në CS50. Unë tani kanë një rrjet të madhësisë 4. Tani unë jam duke shkuar për të filluar përgjigjur këtyre pyetjeve, dhe në fakt, kur kam krijuar këtë app e gjithë kjo është bërë tashmë për mua. Unë nuk duhet të tipit jashtë numrin e seksioneve në funksion tryezë. Ajo ishte tashmë atje, dhe unë jam i mbushur boshllëqet. Sa seksione kam? Një. Të gjitha të bërë. Sa rreshta kam? E pra, unë kam një rresht për çdo fryt, kështu që kjo akuzë është një pronë e çdo grup që thotë se sa e madhe është ajo? Kjo është se si shumë rreshta kam. Së fundi, unë duhet të them se çfarë bën çdo qelizë të duken si? Unë jam duke shkuar për të thënë dequeueReusableCellWithIdentifier. Përsëri, kjo është shkruar tashmë për mua. Unë nuk kam për të bërë këtë veten time, dhe unë dua të kthehet Kjo qelizë në këtë vend. Mos harroni se ne jemi duke e quajtur këtë metodë të njëjtë në çdo qelizë të vetme, dhe ky argument këtu, ky argument indexPath, thotë ajo rresht unë jam in Nëse unë them indexPath.row këtu poshtë kjo do të jetë 0, atëherë ajo do të jetë 1, atëherë ajo do të jetë 2, dhe kjo është kështu që unë e di ajo qelizë Unë jam duke shfaqur. Unë dua të vendosur tekstin e qelizave duke përdorur këtë pronë textLabel për të shkuar brenda array tim fruta dhe për të marrë Objekti i korrespondon çdo rresht. Nëse kjo është një varg, unë jam tani duke pronës tekst për një varg. Unë mund të bëj një gjë tjetër. Unë gjithashtu mund të regjistroheni në një mbajtës ngjarje secilin prej qelizave, kështu që kur unë përgjojnë secilin nga këto qeliza kjo didSelectRowAtIndexPath, kjo do të quhet për mua, kështu që thjesht duke përcaktuar këtë unë tani mund të trajtojë çfarë ndodh kur ju trokitje e lehtë një qelizë, dhe përsëri, ne jemi duke kaluar në të cilën u caktua celular kështu që ne mund të ripërdorimin këtë mbajtës të njëjtën ngjarje për të gjithë qelizat tona. Përsëri, kjo është diçka iOS është bërë për mua. Le të shfaqur një popup annoying që thjesht thotë se ju kap diçka se ku diçka do të jetë objekt rresht. Kur kam drejtuar këtë, unë jam duke shkuar të ketë këtë pamje e bukur tryezë me një rresht për secilin prej këtyre frutave, dhe në qoftë se unë tap një ajo tregon mua se çfarë ka ndodhur. Kuptim? Le të ndërtojmë një pak më shumë komplekse të një app, sa më shumë që ju kap klikuar domate është. Pjesa e bukur për storyboarding po ajo nuk është vetëm do të na ndihmojë ekranet e projektimit individualisht, ajo gjithashtu do të na ndihmojë të lidhë së bashku aplikacionin tonë për të gjithë, kështu app përfundimtar ne do të jetë ndërtimi është kjo e bukur sportive lajme lexues, dhe kështu ajo do të kanë ekrane të shumta, dhe kështu që unë në fakt mund të përfaqësojë secili prej këtyre ekraneve të shumta në storyboard, dhe unë mund të zoom out dhe shikoni aplikacionin tim nga një nivel të lartë. Në mënyrë për të krijuar një të re brenda elementin e storyboard tim kjo është me të vërtetë të thjeshtë brenda Builder Interface. Në qoftë se unë dua të shtoj një tjetër ekran për këtë, për shembull, I pari mund zoom zoom me majë që Apple e do aq shumë, dhe këtu poshtë para se të kërkoni për një buton dhe unë drag and drop një buton në qoftë se unë dua të krijuar një ekran të ri unë mund të vërtetë vetëm drag and drop një kontrollues tërë pikëpamje, kështu që në qoftë se unë marr këtë, ta tërheqë atë mbi këtu, hej, ka një tjetër ekran, dhe kështu tani duke përdorur këtë fotografi të njëjtin storyboard Unë mund të ketë të gjitha ekranet brenda të app tim, dhe unë mund të zoom jashtë dhe të shohim se si ata ndërveprojnë. Këto nuk do të ndërveprojnë ende. Mënyra në të cilën këto 2 ekranet ndërveprojnë është që ju të përcaktojë marrëdhënie. Ju mund të thelb të them këtë ekran, kur ju shtypni këtë buton, Unë dua që ju të rrëshqas mbi këtë ekran të ri. Kjo do të thotë se kjo lloj marrëdhënie mes  ekran i parë dhe i dytë ekran. Ju do të keni në thelb një shigjetë nga ajo butonin në ekran e dytë duke thënë se kur të shtypni këtë buton kjo është ajo ku unë dua të shkoj. Ashtu si ne kontroll klikuar dhe zvarritur për të përcaktuar ato shitore ne jemi duke shkuar për të bërë të njëjtën gjë për të përcaktuar këto segues. Ne do të shohim një shembull për këtë, dhe para se ne fakt tranzicionit nga një ekran në tjetrin iOS është e mirë e mjaftueshme për të thirrur këtë metodë quajtur prepareForSegue, dhe kjo është ajo ku ne mund të fillojnë dërgimit të të dhënave nga një app në një tjetër. Në shembullin e ne jemi gati të shohim atë në thelb do të lejojë na për të filtruar nga ekipet baseball leagues dhe ndarjet. Kur unë të zgjidhni një ligë, për shembull, unë dua të tranzicionit në ekranin tim të ardhshëm, ku unë mund të shfaqin të gjitha ndarjet në këtë ligë ose të gjitha ekipet e ndryshme. Unë kam nevojë për të dërguar në atë ekran që ekipet duhet shfaqur. Për të bërë që unë jam duke shkuar për të përfituar nga kjo metodë këtu. Së fundi, vetëm një pikë të rastit në iOS. Nëse ju doni të ruajtur të dhënat se kjo gjë quhet dhënat kryesore, e cila në fakt është lloj i komplikuar për të punuar me të. Ju gjithashtu mund të përdorni SQL për të ruajtur të dhënat, cila, përsëri, është e bukur, por lloji i në anën e më të komplikuar për të punuar me të, por iOS gjithashtu mbështet këto gjëra really cool quajtur listat e pronës, dhe një listë të pronës është vetëm një fotografi që paraqet çiftet kyç vlerë. Ju përcaktoni një listë të çelësat, dhe ju them këtë kyç do të jetë një grup. Ky kyç do të jetë një varg, dhe në thelb çdo gjë që ju mund të bëni në JSON ju mund të bëni në brendësi të një liste të pronës, dhe kështu që kjo me të vërtetë bukur na lejon të punoni me disa të dhëna. Për shembull, unë kam këtë që kam krijuar Teams.plist. Unë krijuar një skedë të re plist, dhe unë mund të Stërvitja poshtë. Kjo është një fjalor, kjo është një fjalor, këto janë vargjet, dhe kështu që kjo është një përfaqësim bukur grafike e një dokumenti JSON apo vetëm një grup i vlerave kryesore çifte, dhe kështu që kjo është e dhëna që unë do të punojnë me brenda app tim. Le të vijë më parë gjatë këtu. Ne kemi një fotografi shumë më tepër tani. Por le të vijë më parë gjatë këtu në storyboard. Storyboard këtu-në qoftë se unë mund të zoom jashtë- ne tani mund të shohim se kjo është rrjedha e app tim. Unë jam duke shkuar për të filluar së pari në këtë ekran. Unë jam duke shkuar për stërvitje poshtë në këtë ekran, dhe unë jam duke shkuar për stërvitje poshtë në këtë ekran, dhe ne mund të shohim këtu se në qoftë se unë lloj i lëvizur një nga këto rreth ne kemi këto shigjetat shkojnë nga këtu për këtu, dhe mënyrën se si unë të përcaktojë se ishte shigjetë në qoftë se unë të zoom në një pak, dhe në qoftë se kam ardhur mbi të kësaj kontrollues pikëpamje, dhe këtu është një celular, dhe unë dua të them se kur ju trokitje e lehtë një qelizë Unë dua që ju të rrëshqas mbi të një tjetër ekran. Unë thjesht mund të mbajnë poshtë kontroll, lëviz mbi një pak, s'e lëshoj kontrollin, drag këtë qelizë mbi dhe le të shkojnë. Dhe mbi këtu themi se çfarë është tranzicioni që ju doni të përdorni? A ju doni të përdorni atë gjë që është quajtur rrëshqitje shtytje? A doni të rrëshqitje deri nga fundi? Kjo është quajtur modale. Dhe një herë unë klikoni një nga këto, ajo do të tërheqë këtë shigjetë për mua, dhe që do të thotë se unë e kam trajtuar në të vërtetë se çfarë ndodh kur unë shtypni këtë buton grafikisht. Unë nuk kam shkruar asnjë kod të vërtetë me fotografi nga një ekran në një tjetër. I përkufizuar ky shikimi brenda Builder Interface. Në qoftë se unë klikoni në shigjeten këtë, ne mund të shohim se kjo gjë i dha një emër. Unë e quajti atë showDivisions, dhe kjo është kështu që unë mund të di çfarë tranzicioni është gati të ndodhë, dhe ne do të shohim se pse në vetëm një sek. Kjo është se si unë e kam Wired deri ekranet e ndryshme në komponentin tim. Nëse kjo ishte një buton, për shembull, në vend se një pamje tavolinë, Unë mund të kontrollojë klikoni mbi butonin, drag mbi ekran e ardhshme, dhe kjo është se si unë mund të bëjë në këtë mënyrë të navigimit. Vërtetë shpejt, nëse ne vijmë në MasterViewController, përsëri, ne jemi thjesht do të përcaktojë një listë të gjërave që do të shfaqet në pamjen tryezë. Ja unë jam duke thënë se unë dua që ju të merrni atë fotografi plist, dhe unë dua që ju të ngarkesës atë në një fjalor, dhe një herë ju keni atë fjalor, unë jam duke shkuar për t'iu përgjigjur këtyre pyetjeve të njëjta përsëri. Këtu është numri i seksioneve. Një, atje është një rresht për çdo ligë, dhe tekst i secilit qelize duhet të jetë ose një të parë, league parë, league dytë, dhe kështu me radhë. Së fundi, unë jam duke shkuar për të përdorur këtë metodë që ne sapo panë quajtur prepareForSegue, dhe kjo është metodë që do të jetë puna kur unë klikoni në një nga ato rreshtave dhe për këtë arsye aktivizimin se tranzicioni që kam ngritur me shigjeta. Kjo është thënë se unë mund të ketë të shumta Marrëdhëniet nga një ekran në tjetrin. Nëse unë kam 2 butona dhe çdo buton ju merr në një ekran të ndryshme Unë jam duke shkuar të ketë 2 segues, 1 për çdo buton. Por kjo prepareForSegue është, përsëri, do të ripërdoren për secilin nga marrëdhënie ndryshme, kështu që do të thotë se kam nevojë për një mënyrë e identifikimit, nëse ju shtypni butonin e parë ose ju shtypni butonin e dytë. Kujtohet kur unë i dha atij Segue një emër, ky showDivisions, kjo është se si unë tani e di se kjo është Segue që u aktivizua. Të gjitha unë dua të bëj është që unë dua të them Unë dua të kuptoj se çfarë unë vetëm goditi, dhe kështu që të merrni këtë, unë mund të them se unë dua indexPath për rreshtin e përzgjedhur, kujtohet indexPath vetëm i thotë: kur unë vetëm klikuar, dhe pastaj unë dua të them që unë dua të kuptoj se ku unë jam duke shkuar. Kjo destinationViewController, që është një pronë e Segue. Kjo është ekran unë jam duke shkuar për të, kështu që unë e di se ekran unë jam duke shkuar për të quhet DivisionsViewController sepse kam krijuar atë klasë, dhe kështu që tani, nëse unë them d.divisions Unë tani jam vendosjen e një pronë e kontrolluesit view unë jam gati për të shkuar për të. Kjo është se si unë jam i dërgimit të të dhënave nga një ekran në një tjetër ekran. Vetëm duke kërkuar në këtë DivisionsViewController ju mund të shihni këtu se në dosje. h nuk është se ndarjet e pronës, dhe kjo është ajo që unë jam në thelb popullim, kështu që kjo është se si unë e di që unë jam shfaqen ndarjet përkatëse të ligë që unë klikuar, dhe përsëri, pikëpamja aktuale Tabela duket shumë e shumë të njëjtën gjë, vetëm duke u përgjigjur atyre 3 pyetje të thjeshta, si dhe identifikimi i çfarë ndodh kur ju hyni në ekran tjetër. Vetëm disa gjëra të tjera këtu. Vëreni në krye këtu se në vend se duke thënë përfshijnë # Unë tani jam duke thënë # importit. Kjo është vetëm një gjë Objektivi-C. Importi është në thelb një version nicer të përfshijnë, dhe për shembull, ne kemi nevojë të dimë se çfarë është kjo klasë, kështu që unë nuk mund të them vetëm DivisionsViewController. Nëse ne nuk e hashtag brenda standardio.c e dosjes. Tonë c përpiluesit nuk kishte asnjë ide se çfarë ishte printf. Në mënyrë të ngjashme, në qoftë se unë nuk do të importojë DivisionsViewController përpiluesit të vërtetë nuk ka asnjë ide se çfarë një DivisionsViewController është. Vetëm sigurohuni se brenda fotografi të ndryshme. Tuaja m jeni të sigurt për të importuar korresponduese. fotografi h mënyrë që përpiluesit e di se çfarë po ndodh. Së fundi, çfarë Apple në fund të fundit nuk është shfaqur disa të dhëna duke përdorur një pamje të internetit, dhe kështu një pamje web është një objekt në të cilën ju mund të embed një shfletues web pak brenda app tuaj. Të gjithë ju duhet të bëni është të ofrojë një URL në shfletuesin tuaj të internetit, kështu që unë dua të shkoj në mlb.mlb.com, dhe kjo është se si unë mund të hyni në faqen në shtëpi për çdo ekip, dhe kështu duke kaluar në këtë URL pikëpamja web mund të shfaqin këtë për mua, dhe unë mund të shfletoni rreth, dhe imitues është në përdorim nga atë njërit. Tani kjo erdhi nga plist tim. Nëse unë klikoni kjo edhe kjo erdhi nga plist time, dhe kjo rrëshqitje është trajtuar duke përcaktuar ato segues. Unë klikoni këtë dhe një më shumë, dhe tani këtu është UIWebView time, në mënyrë që ashtu si këtu është në faqen e internetit për të URL që unë ngulitur vetëm, dhe unë nuk kanë për të trajtuar ndonjë gjë të çmendur. Kjo është se si për të shfaqur një web faqe. Gjëra të tilla si këtë buton përsëri këtu janë dhënë edhe për mua krejtësisht falas sepse unë kam definuar këto marrëdhënie duke përdorur segues. Çdo pyetje? Po. [Student] Pra, kur ju përdorni shenjat e, ju kurrë nuk keni për të ndonjë gjë të lirë? Pikërisht, kur ju telefononi dhe shenjat e init ju nuk keni për të liruar atë. IOS do të trajtojë të gjithë se për ju. Është e mrekullueshme, dhe ju nuk jeni i thyer rregullat. Po. [Student] Nëse ju keni qenë të përfshirë ekipet më shumë që mund të përshtatet në ekran, ajo automatikisht do të ketë një mundësi rrotull, apo është diçka që ju duhet të shtoni? Pikërisht, në qoftë se kam pasur shumë ekipe, për shembull, kjo automatikisht do të trajtojë scrolling për mua, dhe të gjitha shqetësimet e performancës me tabelën e madhe janë trajtuar edhe totalisht për mua. Pyetje të tjera? Gjithë këtij kodi do të jetë postuar. Ne lloj glossed mbi një pak detaje më të vogla, por gjëra të tilla si vendosjen e disa prona për të parë web janë vetëm gjërat që ju mund të merrni duke shfletuar dokumentacionin Apple, e cila është me të vërtetë, me të vërtetë bukur hedhur jashtë. Ata kanë një shumë të Apps mostër dhe shembull usages TV të ndryshme, kështu që patjetër lexoj ato, nëse mundeni. Vetëm disa lidhje të dobishme që ju mund të dëshironi të hidhni një sy në. Këto janë disa udhëzime dobishëm dokumentacionit. Të URLs janë masive, kështu që ata janë shkurtuar. Ky pari është bibliotekë të tërë të dokumentacionit. Ka bare pak e kërkimit, kështu që nëse ju filloni butonin typing ajo do të fillojë t'ju dhënë të gjithë informacionin në lidhje me të gjitha gjërat që ju mund të bëni me një buton. Unë e kam përfshirë gjithashtu View Tabela Guide programimit. Ajo trajton pikëpamjet tavolinë në detaje shumë më tepër, si për të bërë gjëra të tilla si dinamike shtoni qeliza qelizat apo editojnë apo fshijnë ato. Ka shumë aplikacione mostër nga Apple që do të ju tregojnë se si për të bërë këtë, dhe më në fund, kjo e fundit është Udhëzimet Interface Njeriut, dhe kjo është në thelb një diskutim i komponentëve UI, gjëra të tilla si nuk e bëjnë një buton që është 4 nga 4 pixels pixels. Kjo është një ide e keqe, dhe gjëra të tjera që Apple dëshiron që ju të bëni për të inkurajuar dizajn të mirë. Ndonjë pyetje e fundit para se të përfundojë? Të gjithë të drejtë, patjetër të ndjehen të lirë për-we're do të kenë etiketa të posaçme për të diskutuar. Ne do të kemi një iOS një, kështu që patjetër të ndjehen të lirë për të shfrytëzuar atë. Nëse ju doni të punoni me shokët e klasës tuaj në projekte ose të ndihmojë të kuptoj se disa sende të rastit iOS të ndjehen të lirë të email mua, dhe definitivisht lexoj të gjitha online Kodit sepse vetëm në interes të kohës ne lloj glossed mbi më shumë detajet finer trashë të gjërave. Por në qoftë se jo, atëherë fat të mirë në projektet iOS tuaja, dhe unë shpresoj se ne kemi një fluks i madh Apps në App Store. [CS50.TV]