RHED SHI: Selamat Datang lihat seminar CS50 - Pengantar iOS. Terima kasih semua untuk datang. Saya harap Anda hanya bersemangat seperti saya tentang iOS. Tahun lalu, aku mengambil CS50 sebagai mahasiswa tahun kedua, dan pada dasarnya saya belajar iOS untuk saya tugas akhir. Dan itu cukup - Yah, itu tidak mudah, tetapi ada banyak dukungan tutorial online. Dan aku benar-benar berharap bahwa dengan ini seminar, aku akan memberikan kalian kepala mulai pada pengembangan iOS Jadi, dalam hal pengembangan iOS, ada dua hal utama yang kita ingin menutup hari ini. Pertama, bahasa - bahasa ini akan berada di Objective-C. Kami akan benar-benar mendengar sesuatu yang benar-benar menarik. Jadi, Anda dapat bergabung dengan seluruh Apple komunitas pengembang dan membangun beberapa apps benar-benar mengagumkan. Juga, iOS 7 indah, mudah-mudahan, untuk sebagian dari Anda. Tapi itu kontroversial, saya tahu. Dan terutama, apa yang ingin saya lakukan adalah panduan Anda melalui Objective-C, dan juga Xcode, yang merupakan terintegrasi lingkungan pengembangan yang Anda akan untuk bekerja di iOS. Jadi, hanya kata pada Objective-C. Pada dasarnya, ini sama persis seperti C, tapi dengan banyak hal-hal lain. Dan, yang lebih ketat, itu sebenarnya super-set C. Jadi apa pun yang Anda bisa dilakukan di C sekarang, yang pada dasarnya seperti pset 0 sampai 6, Anda dapat dilakukan di Objective-C. Jadi, jangan merasa takut tentang hal ini baru bahasa yang Anda akan belajar. Anda sudah tertutup banyak itu, karena Anda sudah semua dilakukan C masa lalu ini semester, kecuali sekarang Anda akan untuk memiliki lebih banyak untuk bekerja dengan. Dan aku hanya akan membawa Anda melalui beberapa contoh untuk menyoroti beberapa perbedaan utama yang saya temukan adalah ketika benar-benar penting yang saya pelajari Objective-C tahun lalu. Yah sebenarnya, jadi, titik lainnya adalah, Objective-C adalah, jelas, object-oriented. Dan kita akan membahas sedikit tentang apa artinya nanti. Pada dasarnya, ini seperti bagaimana Anda bekerja dengan structs dalam pset masa lalu, dengan node dan lainnya yang serupa hal-hal seperti itu. Kecuali, di Objective-C, semuanya obyek, dan Anda akan menjadi melewati sekitar pointer ke objek daripada nilai-nilai sendiri. Jadi, itu hanya sesuatu yang penting yang perlu diingat. Jadi, kenapa tidak kita mulai dengan beberapa perbedaan sintaks antara C dan Objective-C? Saya ingin menyoroti # include, Anda tahu, io.h standar dalam C dan C + +, dengan versi Objective-C itu, yang adalah # impor, dan kemudian semacam file header. Dalam hal ini, akan UIKit, Anda tahu, memangkas UIKit.h. Hal ini juga bisa, Anda tahu, MKMapView Anda memangkas MKMapview.h jika Anda ingin yang harus dilakukan, seperti, peta dalam aplikasi Anda. Hal yang serupa seperti itu. Jadi, yang penting adalah meliputi kini telah berubah untuk mengimpor. Tapi gagasan itu masih tetap. Kau akan mengimpor semacam dari file header ke dalam program Anda. Saya juga ingin menyoroti perbedaan antara printf dan NSLog. Namun, seperti yang kita katakan sebelumnya, Objective-C adalah ketat super-set C, yang berarti bahwa ada printf di Objective-C, juga. Namun, kebanyakan orang tidak menggunakan itu. Kebanyakan orang menggunakan NSLog ini karena memberikan cap waktu, dan kita akan melihat dalam laga nanti. Tapi, itu umumnya lebih berguna cara untuk mencetak variabel. Dan saya juga ingin menggarisbawahi bahwa NSLog mengambil hanya sama nilai placeholder sebagai printf tidak - jadi% d adalah untuk int, % F adalah untuk pelampung. Namun, saya ingin menyoroti sangat terakhir ini - NSLog% pada tanda - yang merupakan tempat bagi suatu benda. Dan seperti yang saya katakan sebelumnya, penawaran Objective-C cukup banyak terutama di objek, dan jadi ini akan datang dalam digunakan ketika Anda ingin mencetak, mungkin, mungkin sebuah NSArray, atau NSDictionary, atau NSString. Jadi, juga, perhatikan bahwa, di NSLog kami pernyataan, kita memiliki di tanda di depan kutipan - yaitu untuk menandakan string yang, sekarang, di Objective-C adalah obyek. Mereka tidak lagi hanya bintang arang. Mereka obyek dan diperlakukan seperti itu. Jadi, itu benar-benar penting bahwa ketika Anda menggunakan NSLog dibutuhkan dalam NS string, yang berarti bahwa Anda akan memiliki untuk memasukkan di di depan Anda tanda kutip. Dan itulah mengapa Anda lihat, di sini, di semua fungsi saya panggilan ke NSLog ini, saya memiliki di di depan tanda kutip, bahkan meskipun% d dan% f adalah semua sama dari C. Ada pertanyaan sejauh ini? Saya akan mencoba untuk pergi melalui ini dengan cepat sehingga bahwa kita dapat memiliki lebih banyak waktu untuk bekerja dengan Xcode dan Objective-C, sehingga bahwa kalian bisa mendapatkan lebih banyak akrab dengannya. Selanjutnya, saya ingin menyoroti sesuatu konseptual penting. Jadi, di C, kebanyakan hal fungsi. Kami membuat panggilan fungsi. Kami menyatakan fungsi dengan cara ini, dengan mengembalikan tipe pertama, maka nama fungsi, tanda kurung, dan kemudian argumen apapun dan jenis argumen ini kami ingin lulus masuk Dan Objective-C, karena semuanya adalah obyek atau kelas - jadi kelas dan objek adalah dua istilah yang sebagian besar identik dengan satu sama lain, jadi saya dapat menggunakannya secara bergantian seluruh seminar. Tapi, Anda akan melihat bahwa kita memiliki metode dalam Objective-C ketimbang fungsi. Dan metode milik objek. Jadi seperti, mungkin mengambil misalnya, node - Jenis kami [Tak terdengar] simpul dari pset 6 atau 5 - kita memiliki kata, properti, atau node pointer berikutnya. Metode hanya fungsi di dalam semacam struktur. Jadi, dalam hal ini, struktur akan obyek, dan kemudian metode ini sesuatu yang dimiliki oleh suatu objek. Dan ini adalah bagaimana Anda akan menyatakan, semacam, sebuah metode. Anda akan mulai dengan, sekali lagi, kembali Jenis - jadi, saya mencoba untuk warna kode kata-kata kunci di sini sehingga kalian dapat melihat, setidaknya, format kesamaan antara fungsi deklarasi dan deklarasi metode. Jadi, Anda mulai dengan, Anda tahu, return Jenis - dalam kasus ini, itu adalah array, atau sebuah pointer NSArray - dan kemudian Anda memiliki metode ini. Dan kemudian, apa yang menarik di sini adalah bahwa alih-alih memiliki kurung, kami memiliki titik dua ini. Dan kemudian, di depan argumen kami, kami menempatkan, sekali lagi, dalam kurung jenis argumen kami. Jadi, sekarang saya mencoba untuk membuat perbandingan antara, Anda tahu, n dan nomor, karena mereka kedua ints sejenisnya. Dan kemudian, yang lain adalah jenis NSUInteger. Dan kemudian, dengan Objective-C, ketika Anda ingin memiliki beberapa argumen klausa Anda metode, Anda, semacam, memisahkan mereka jenis seperti ini - Saya tidak yakin bagaimana untuk menggambarkan itu, tapi ini adalah contoh yang baik tentang bagaimana Anda dapat memiliki beberapa argumen di sana. Anda bisa, tentu saja, hanya benar-benar mengabaikan usus andArray NSArray Array jika Anda ingin hanya metode yang mengambil satu argumen. Ya, pertanyaan. AUDIENCE: Apakah kedua NSUInteger dan Argumen NSArray yang dapat diambil dalam dalam NSArray? RHED SHI: Ya. Jadi, mari saya jelaskan. Jadi, ya. Jadi, pertanyaannya adalah yang NSUInteger dan NSArray * jenis argumen, dan itu benar. Jadi, Anda selalu ingin menentukan apa jenis argumen Anda. Dan di sini, aku mencoba untuk memperkenalkan Anda dengan beberapa sintaks dan vocab dari Objective-C, sehingga mereka adalah jenis yang sebenarnya bahwa Anda akan berurusan dengan. Dan seperti yang Anda akan melihat, array tidak lagi, semacam, braket hal-hal sederhana. Mereka benda. Meskipun, jika kita pergi ke berikutnya slide, kita dapat melihat bahwa kita bisa keras-kode NSArray di Objective-C dengan hanya sebuah simbol di di depan kurung. Aku tidak, sebenarnya, cukup yakin apakah Saya sintaksis keras-kode array benar untuk versi C, tapi itu seharusnya dalam array C. Jadi, ini adalah bagaimana Anda akan, Anda tahu, mungkin menggunakan fungsi atau metode yang kita buat sebelumnya. Benar? Jadi, ini adalah di mana kita mendeklarasikan kami fungsi dan metode kami. Dan sekarang kita ingin menggunakannya dalam program kami, dan ini adalah bagaimana kita akan melakukannya. Jadi, di C, Anda akan memiliki, kau tahu, mungkin, bool b, dan Anda menetapkan ke sama fungsi, dan kemudian Anda lulus dalam argumen. Di Objective-C, itu cukup banyak hal yang sama. Anda memiliki NSArray * my_array, dan itu akan sama - sekarang, satu-satunya perbedaan di sini adalah hal objek ini, yang saya sudah ditandai dengan warna kuning, dan seperti yang Anda lihat, di C, ada ada kata kuning lainnya. Dan itu karena metode milik dengan benda tertentu. Jadi itulah mengapa saya harus memiliki objek itu, semacam, menyebut metode ini pada angka nol, dan kemudian NSArray a, b, c, d. Setiap pertanyaan itu? Kita akan melihat konsep-konsep ini dalam aksi segera ketika kita masuk ke demo. OK. Sekarang, saya ingin berbicara sedikit singkat tentang Xcode 5, yang merupakan lingkungan pengembangan terintegrasi bahwa Anda akan bekerja dengan. Saya tahu banyak dari Anda, atau beberapa dari Anda, tidak memiliki Mac, yang merupakan masalah karena Xcode tidak tersedia untuk Windows dan PC. Jangan tanya kenapa, tapi mungkin - yeah, perusahaan. Apapun. Tapi bagaimanapun, jadi, saya minta maaf jika beberapa Anda harus men-download beberapa jenis mesin virtual untuk Mac di untuk menjalankan Xcode 5. Tapi itu adalah bagus cukup perangkat lunak untuk digunakan. Jadi, sebelum kita menyelam ke dalam apapun dari demo, saya hanya ingin menampilkan gambar dari apa yang tampak seperti di Xcode Anda jendela, dan kemudian juga berbicara tentang apa seluruh ruang ini. Jadi, itu jenis seperti belajar bagaimana menggunakan Microsoft Word, kecuali Anda ingin mendapatkan dibiasakan dengan semua hal yang berbeda yang yang terjadi di sini. Jadi pertama, saya ingin menunjukkan Anda ke toolbar di bagian atas. Anda akan melihat bahwa, di bagian atas, Anda akan memiliki nama file - atau, sebenarnya, nama proyek Anda dan kemudian nama file Anda. Mencatat bermain dan tombol berhenti. Mereka adalah orang-orang bahwa Anda akan gunakan untuk menjalankan aplikasi Anda pada simulator - simulator iOS. Hal ini secara otomatis dilengkapi dengan Xcode 5, sehingga Anda tidak perlu khawatir tentang men-download beberapa jenis simulator. Anda hanya menekan bermain dan kemudian berjalan app Anda. Dan Anda dapat bermain-main dengan Anda, dan Anda akan melihat bagaimana kerjanya nanti. Dan kemudian, di tengah, tentu saja, adalah di mana semua kode yang indah Anda akan pergi. Dan kemudian, di sisi kiri, Anda akan memiliki ini, semacam, folder - navigasi - dan kemudian, Anda juga akan melihat bahwa, bersama dengan icon folder, ada sekelompok ikon lain ada yang akan berguna nantinya. Dan kemudian, di sisi kanan adalah utilitas daerah di mana Anda dapat bekerja dengan beberapa objek dan menentukan, Anda tahu, apa warna harus, apa font teks harus, dan sebagainya. Meskipun, segala sesuatu yang Anda lakukan di daerah utilitas, Anda dapat dilakukan di kode juga. Jadi, saya akan pergi melalui dua contoh penggunaan, sederhana, tidak ada kode di semua - atau kode yang sangat minimal - ayat semua kode, hanya agar kalian tahu apa yang Anda bisa dan tidak bisa dilakukan di Xcode dan Objective-C. Dan kemudian, akhirnya, turun di bagian bawah, Anda memiliki area debug. Jadi, Anda tidak lagi harus menjalankan GDB, dan sebagainya, pada program Anda. Secara otomatis melakukannya untuk Anda. Dan Anda juga dapat mencetak barang ke daerah ini. Jadi sebenarnya, kemudian, kita akan pergi melalui mario.c, jika kalian masih ingat itu, di Xcode. Sehingga harus menyenangkan. Dan kemudian, hanya untuk membawa kembali ke Objective-C, saya ingin menyoroti apa Anda dapat melakukannya dengan jika pernyataan. Jadi, Anda tahu, karena Objective-C adalah superset dari C, semua yang Anda lakukan adalah, harfiah, sama seperti C. Anda hanya memiliki sedikit perbedaan. Jadi, Anda akan melihat form untuk jika Pernyataan masih sama - Anda memiliki jika, dan kemudian Anda memiliki tanda kurung dengan kondisi di dalam, dan kemudian kurung kurawal untuk apa pun yang Anda ingin melakukan dalam sana. Namun, saya ingin menempatkan ini slide up di sini, hanya untuk menggambarkan bahwa, karena kita sedang berhadapan dengan benda-benda sekarang, kita harus menggunakan hal-hal ini disebut seperti, sama dengan string, yang adalah, kebetulan, metode yang string atau obyek NSString. Jadi, kata, dalam hal ini, adalah NSString obyek, dan memiliki metode yang disebut adalah sama dengan string, dan kemudian kita melewati dalam string keras-kode untuk melihat apakah mereka adalah sama satu sama lain. Ada pertanyaan sejauh ini? OK. Dan, saya ingin pergi ke untuk pernyataan juga. Jadi, misalnya, jika kita ingin lingkaran lebih panjang dari string di C, ini harus akrab bagi Anda. Dan, di Objective-C, aku ingin untuk menyoroti hal ini, semacam, metode yang disebut count. Well, sebenarnya, biarkan aku hanya mengambil kembali. Count adalah metode array. Namun, itu lebih khusus milik array, yang mengapa Anda dapat menggunakan notasi titik. Tapi aku tidak ingin masuk ke terlalu banyak hal-hal konseptual ini, saya hanya ingin untuk menunjukkan kepada Anda bagaimana hal-hal akan terlihat seperti di Objective-C terhadap C. Dan juga, saya ingin menunjukkan bahwa meskipun aku telah menggunakan NSUInteger di depan semua saya i di Objective-C, Anda juga dapat menggunakan int, karena int adalah benar-benar berlaku di Objective-C, juga. Ya? AUDIENCE: Apakah hanya gaya, atau - RHED SHI: Ya. Jadi, seperti yang Anda lihat - jadi, pertanyaan itu adalah bahwa hanya masalah gaya. Seperti yang Anda lihat, aku punya, semacam, star asterisk hal bawah di bagian bawah, dan link yang membawa Anda ke Stack Overflow membentuk, di mana seseorang menjelaskan perbedaan antara int di NSInteger dan NSUInteger. Jadi, Anda dapat membaca tentang itu nanti. Slide ini akan, tentu saja, tersedia untuk Anda. Mari kita lihat. OK, mengagumkan. Jadi, ini juga termasuk dalam slide karena saya pikir ini adalah besar website yang memperkenalkan Anda sintaks Objective-C. Jadi, sebenarnya, mengapa kita tidak pindah ke Chrome dan memeriksa website ini? Benar. Jadi, apa yang saya ingin menunjukkan Orang-orang di sini adalah gambar ini. Jadi, ini, semacam, akan menjadi apa Anda akan melihat dalam setiap File Xcode. Sebenarnya, kenapa tidak kita hanya mengambil waktu untuk, semacam, ambil ini masuk Jadi, buku ini - itulah objek yang kita sedang berhadapan dengan. Dan kemudian, itu jelas akan menjadi diwarisi dari beberapa objek lain, tetapi Anda tidak perlu khawatir tentang itu. Dan saat itu, mungkin, memiliki beberapa variabel anggota. Yang penting saya ingin menunjukkan Anda adalah metode instan, di sini. Jadi, metode instan dilambangkan dengan tanda minus ini. Dan kemudian, karena Anda akan melihat, kami sudah mulai melihat paradigma untuk metode deklarasi, kan? Jenis kembali, nama metode, dan maka jenis argumen, dan maka nama argumen. Dan tanda minus ini berarti bahwa itu adalah metode contoh, yang berarti bahwa metode ini hanya tersedia bagi benda-benda yang telah instantiated. Untuk kontras itu, metode dengan ditambah tanda di depan mereka adalah kelas metode, yang berarti bahwa Anda dapat memanggil metode ini, bahkan jika Anda tidak memiliki namun obyek diciptakan. Jadi, untuk contoh yang jelas, NSString adalah sebuah kelas. Dan Anda dapat menelepon, misalnya, metode kelas pada NSString - sebenarnya, seperti, kata NSString. Namun, dalam rangka untuk menggunakan metode, Anda benar-benar perlu membuat string. Sebagai contoh, NSString star string yang sama pada tanda kutip, hello world. Dan kemudian, Anda dapat menggunakan metode ini - metode instan - pada yang hello world tali. Jadi, itulah perbedaan antara metode instan dan metode kelas. Dan, kita hanya menutupi bagian ini. Properti adalah hal lain yang dalam objek, pada dasarnya. Dan Anda menyatakan mereka dengan pada kata kunci properti. Anda memiliki pilihan ini, di sini, bahwa saya akan menjelaskannya nanti ketika kita masuk ke demo. Ya? Hi. AUDIENCE: Bisakah Anda memperbesar, please? RHED SHI: Oh ya. Maaf. AUDIENCE: Terima kasih. RHED SHI: Itu harus jauh lebih baik. AUDIENCE: Ya. Terima kasih. RHED SHI: Ya, tolong ingatkan saya jika Aku lupa untuk zoom in atau zoom out. Jadi, ini adalah semua yang saya inginkan untuk menunjukkan Anda untuk - whoa, itu banyak - untuk website ini. Jadi, mari kita kembali ke slide kami. Sebenarnya, sekarang mari kita sejenak untuk menyelam ke dalam demo. Jadi, kita akan mulai dengan proyek Xcode baru. Jadi, jika Anda akan membuka Xcode pada semua mesin Anda, itu akan membawa Anda beberapa Halaman di mana dikatakan, seperti, baik terbuka up proyek yang sudah ada atau yang baru proyek, dan Anda harus klik sebuah proyek baru. Dan kemudian, ia harus mengambil Anda ke layar ini. Ya? AUDIENCE: Jika kita tidak memiliki Mac, kita hanya semacam dingin? RHED SHI: Atau lihat di dengan seseorang, ya. Ya. Anda dapat bersantai, juga. OK. Jadi, apa yang kita akan lakukan pertama, sekarang, adalah, sebenarnya, kita akan melakukan satu aplikasi tampilan. Jadi, jika Anda akan melihat, apa yang baik tentang Xcode dan dukungan Apple untuk pengembang adalah bahwa Anda memiliki banyak template untuk bekerja dengan sudah. Anda bisa, misalnya, membuat aplikasi master-detail. Anda dapat membuat game - dan benar-benar, saya tidak akan masuk ke permainan, karena permainan adalah cerita yang berbeda untuk pengembangan iOS. Dan mereka agak terpisah, jadi saya tidak akan membahas itu. Kemudian, Anda telah berbasis page aplikasi. Anda memiliki aplikasi tab - jadi seperti, misalnya, Bank of America mungkin memiliki, seperti, aplikasi tab. Ini yang di mana Anda memiliki tombol di bagian bawah. Dan kemudian, Anda memiliki Kit permainan Sprite. Atau Anda dapat bekerja dari awal, yang adalah apa yang akan kita lakukan nanti. Tapi mari kita, pertama, mulai dengan aplikasi tampilan tunggal. Kemudian, ia akan meminta nama produk, dan kita bisa melakukan tes. Nama Organisasi - jadi, nama organisasi, perusahaan identifier - mereka adalah penting jika Anda akan untuk menempatkan aplikasi Anda di toko app. Selain itu, kode Anda akan berjalan baik-baik saja tanpa ini. Ini akan menjadi penting jika Anda ingin - jadi, per se, seperti, menempatkan aplikasi Anda ke telepon Anda atau sesuatu, dan uji itu, Anda tahu, dalam kehidupan nyata - ini akan menjadi penting. Hal ini cenderung biasanya dikaitkan dengan semacam rekening pengembang dengan Apple. Dan, aku tahu, mungkin, banyak dari kalian tidak akan memiliki account pengembang. Aku tahu universitas memiliki satu. Saya pikir CS memiliki satu. Tapi, Anda bisa email saya dan saya akan mencoba untuk mencari tahu untuk Anda. Tapi sekarang, aku baru saja dimasukkan ke dalam beberapa hal placeholder di sini. Dan Anda bisa, tentu saja, di sini, pilih apakah Anda ingin menjadi semata-mata iPhone, iPad di, atau keduanya - aplikasi universal. Jadi, untuk saat ini, mari kita lakukan universal, hanya untuk melihat kedua sisi platform. Mari kita lihat. Jadi, sekarang, aku akan menyimpan dalam semacam folder. Tidak peduli di mana - Anda dapat selalu bergerak nanti. Dan, sekarang, kita dibawa untuk proyek Xcode kami. Saya tidak akan khawatir tentang semua ini. Saya akan menyarankan tidak menyentuh apapun ini, kecuali Anda tahu persis apa Anda lakukan. Jadi, semua ini, hanya mengabaikan untuk sebagian besar. Anda tidak perlu menyentuhnya, dan jika Anda melakukan Anda mengacaukan beberapa hal di sini, menjadi sedikit rumit. Jadi, kenapa tidak kita melihat ke dalam file pada sisi kiri di navigator kami. Di sini, kita memiliki AppDelegate.h. Kami memiliki AppDelegate.m Jadi, seperti yang Anda akan pemberitahuan, kami telah file header, yang berakhir di titik jam, dan kami memiliki implementasi - sebenarnya, biarkan aku zoom in OK. Mari saya zoom in Benar, jadi Anda telah file header dan Anda memiliki file implementasi. Sebenarnya - OK. Ini sedikit aneh, tapi beruang dengan saya. Kemudian, karena kita telah memilih tampilan tunggal aplikasi, kita akan menjadi bekerja dengan storyboard. Jadi, storyboard adalah sesuatu bahwa Apple telah datang dengan untuk benar-benar membantu pengembang cepat prototipe aplikasi mereka. Jadi, ini adalah di mana Anda dapat membuat sebuah aplikasi tanpa menulis baris kode. Namun, dalam pandangan aplikasi kita satu, yang kita lakukan, tentu saja, memiliki mengajukan pandangan kami, yang adalah controller tampilan. Jadi, kita memiliki header dan file implementasi, di sini. Dan, aku akan memperkecil sekarang karena kita harus bekerja dalam storyboard. Jadi, inilah pandangan kami. Jika kita, sederhana, menjalankan aplikasi sekarang, ada tidak banyak menarik terjadi. Jadi, Anda akan melihat layar putih ini. OK? Dan, di daerah utilitas, kita dapat menambahkan banyak hal yang berbeda untuk itu. Jadi, ketika Anda sedang berhadapan dengan layar di iOS, pengendali tampilan adalah benda-benda yang merangkum, semacam, pandangan Anda. Jadi, pandangan kontroler selalu telah properti yang disebut pandangan. Dan pandangan itu, biasanya, berisi, Anda tahu, apa yang Anda ingin melihat pada layar. Jadi, baik, mari kita mulai dengan menempatkan, mungkin, mungkin label. Jadi, mari kita menaruh label di sana - menempelkannya di tengah. Jadi, sekarang aku sudah mengklik label, saya bisa masuk ke properti inspektur dan mulai mengubah nilainya. Sebut saja CS50 Colours. Dan, saya juga dapat mengubah font. Jadi, bukannya melakukan sistem, yaitu default, kita bisa melakukan satu kustom. Kita dapat mengubah - Anda tahu, ultralight, membuatnya 32. Dan kemudian, kita bisa membuat kotak kami lebih besar. AUDIENCE: Apakah Anda pikir Anda dapat memperbesar hanya sedikit lebih, mungkin? RHED SHI: Ya? OK. AUDIENCE: Hanya tekan itu? RHED SHI: Mari kita lihat. Apakah pekerjaan ini? AUDIENCE: Just lulus Xcode? RHED SHI: Tentu. OK. Mengagumkan. AUDIENCE: Label di bawah? Label? RHED SHI: Apa itu? AUDIENCE: Apa drop-down adalah label di bawah? RHED SHI: Jadi, pertanyaannya adalah, apa drop-down adalah label di bawah? Seharusnya, sederhana, berada di bawah sini. Saya kira itu hal kubus. Tapi biasanya, ini adalah default - Aku hanya akan turun di sini sampai aku menemukan label. Ya. Jadi sekarang, kami memiliki label kami. Mari pusat itu. Dan Xcode memberi kita pedoman untuk centering objek. Jadi, sekarang mari kita menjalankan kode kami lagi. Di sana kami pergi. Jadi, kita memiliki CS50 Colours. Dan sekarang, mari kita meletakkan tombol di sana, kan? Karena kita ingin membuat ini interaktif. Jadi, mari kita menempatkan sebuah tombol di sini. Dan kita akan menyebutnya tombol ini "tekan di sini untuk melanjutkan. "Kami akan pusat itu, juga Sebenarnya, itu sudah terpusat. Ya. Jadi, sekarang kita memiliki sebuah tombol. Dan jika kita menjalankan ini lagi, kita akan memiliki tombol kecil yang bagus di sini. Dan saya bisa klik, tapi tidak melakukan apa-apa, karena kita tidak melakukan apa-apa dengan tombol belum. Jadi, mari kita membuat pandangan lain, kan? Jadi, katakanlah saya ingin memanfaatkan bahwa tombol dan saya ingin pergi ke halaman lain - pandangan lain. Apa yang akan saya lakukan adalah, saya dapat membuat pandangan controller, kan? Sekarang saya akan klik pada tombol, dan kemudian, yang penting adalah, aku akan klik - atau - ya, tekan kontrol pada keyboard. Control. Klik pada tombol, dan kemudian tarik. Jadi, ingatlah untuk menahan tombol kontrol. Mari kita lakukan itu lagi. Jadi, memegang kendali, klik, dan tarik apa yang ingin Anda lakukan. OK. Dan sekarang, saya memiliki beberapa pilihan di sini. Saya dapat baik mendorong, atau aku bisa melakukan moda angkutan, atau aku bisa melakukan custom. Push hanya jika Anda memiliki pengontrol navigasi. Saat ini, pandangan pertama kami kontroler tidak dalam setiap pengontrol navigasi. Jadi, controller navigasi adalah salah satu yang memberikan tombol kembali pada aplikasi iOS di mana Anda miliki, Anda tahu, bahwa atas, semacam, bar tebal - di mana Anda bisa kembali, atau maju, dan sebagainya. Saat ini, saya tidak memiliki itu. Jadi, itu sebabnya aku tidak bisa melakukan push. Jadi, saya mengklik mendorong sengaja, di sini. Dan sebenarnya, mari kita menjalankan kode, dan harus crash pada saya. Hanya jika saya menekan tombol meskipun, jadi - benar. Jadi, ini buruk. Dan, seperti yang Anda lihat, di sini, kami memiliki pesan kesalahan. Jadi, "Dorong segues hanya dapat digunakan ketika Sumber kontroler dikelola oleh contoh UI navigasi pengendali. " Jadi, karena ini bukan dalam sebuah navigasi controller, Aku tidak bisa melakukan itu. Jadi, sekarang, aku akan kembali ke folder, akan kembali ke storyboard. AUDIENCE: Apa navigasi controller, lagi? RHED SHI: Jadi, sekarang saya akan menunjukkan kepada Anda. Mari kita lihat. Jadi, aku akan klik pada tampilan ini controller, dan kemudian aku akan pergi sampai dengan produk - sebenarnya, tidak, maaf - Editor. Dan aku akan pergi ke - sebenarnya, aku klik di atasnya? Tidak. Di sana kami pergi. Aku akan pergi ke editor, turun untuk menanamkan dalam, dan kemudian navigasi kontroler. OK. Dan, ruang kerja saya terlihat sangat berantakan, jadi mari kita membersihkan ini. Jadi, semua ini adalah storyboard. Dan dengan cara ini - OK, berhenti - Saya dapat dengan cepat membangun sesuatu seperti ini. Dan kemudian, sekarang aku bisa kembali, kau tahu? Tapi ini adalah jenis membosankan, kan? Jadi, apa yang ingin saya lakukan adalah, saya tidak ingin untuk membuat, hanya cukup, pandangan kontroler. Katakanlah saya ingin benar-benar membuat tampilan tabel controller, jadi saya bisa dimasukkan ke dalam beberapa warna yang bagus, ke dalam tabel. Jadi, sekarang aku sudah dimasukkan ke dalam tampilan tabel saya controller, saya perlu untuk menghubungkan kembali dari tombol ini untuk controller tampilan. Jadi saya perlu melakukan kontrol saya, klik, tarik hal lagi. Dan sekarang aku bisa melakukan push, karena saya menanamkan itu dalam controller navigasi. AUDIENCE: Navigasi kontrol hanya memungkinkan Anda untuk pergi dari satu tempat ke tempat? RHED SHI: Ya. Jadi, lebih teknis, itu sebuah objek di mana - jadi, dalam navigasi objek controller, itu melacak array. Dan array memegang semua berikutnya melihat kontroler. Itu sebabnya ketika Anda menekan kembali, itu kembali ke halaman sebelumnya. Karena controller navigasi objek, atau kode yang menangani obyek ini, memiliki sebuah array yang membuat melacak ini pengendali tampilan, dan kemudian, Anda tahu, dq pandangan controller dan memberikan Anda kembali sebelumnya. Jadi, ini adalah hal-hal teknis, tapi - dan saya tunjukkan nanti di kode, jika kita punya waktu. Aku agak kehabisan waktu, tapi - Jadi, dengan tampilan tabel, apa yang bisa kita lakukan adalah - Ini biasanya diatur secara otomatis ke Dynamic Prototype - kita akan membuatnya Sel statis, kalau tidak kita akan mengalami beberapa masalah. Dan kemudian, katakanlah aku akan untuk memiliki satu bagian. Jadi, bagian seperti - jika Anda pernah melihat aplikasi musik, ketika Anda memiliki seniman, bagian akan menjadi A melalui Z's - huruf - dan kemudian, Anda tahu, individu baris akan menjadi nama artis. Jadi, apa yang keren di sini, adalah bahwa saya bisa mengakses semua benda di dalam dari storyboard saya melalui ini menu drop-down, juga. Jadi, aku akan klik pada bagian saya, dan aku ingin, kau tahu, mungkin lima baris. Dan kemudian, dalam setiap baris, Saya ingin menempatkan label. Dan aku akan menelepon Biru ini. Dan kemudian, saya ingin menempatkan pandangan UI, Anda tahu, mungkin untuk, seperti, sebuah kotak kecil. Sehingga saya bisa menunjukkan orang preview warna. Dan aku akan kembali ke properti dan mengubah warna itu untuk, oh, aku tidak tahu, yang satu ini. Dan kemudian, perhatikan juga, di sini, ketika saya memiliki aksesoris, saya dapat memiliki banyak aksesori yang berbeda bahwa Anda biasanya melihat. Indikator pengungkapan, detail, atau tanda centang, atau hanya sekedar detail. Jadi, mungkin kita bisa lakukan, seperti, pengungkapan indikator, misalnya. Dan kemudian, mengapa kita tidak mengambil ini, copy paste, dan menempatkan mereka ke dalam berikutnya baris tabel. Jadi, kita dapat memanggil Kuning ini. Dan saya mungkin harus memperpanjang ini. Mari kita membuatnya kuning. Dan dengan cara ini, kita dapat menyalin tempel perjalanan ke bawah. Apa itu? Purple. Jadi, ini semua CS50 khas warna yang telah Anda lihat di kelas - sebenarnya, maaf - atau di website. Mudah-mudahan kalian bisa melihat apa yang saya lakukan di sini. OK. Yang terakhir. AUDIENCE: Bagaimana Anda menambahkan baris awalnya? RHED SHI: Jadi, pertanyaannya adalah, bagaimana aku menambahkan baris awalnya? Aku pergi ke bagian tabel ini - atau namun saya bisa pilih bagian tabel - dan kemudian, di sini, saya Diperbaharui jumlah baris. Dan, biarkan aku berharap bahwa ini bekerja. OK. Mari kita lihat apakah ini bekerja. Oh, sempurna, mengagumkan. OK. Sementara aku membangun demo saya, beberapa hal-hal yang tidak selaras, jadi, terima kasih untuk tepuk tangan. Ya. Jadi, mari kita lihat. Kami akan membuat sembilan ini hanya untuk membuat segala sesuatu - atau sebenarnya, mari kita mengubah semua ini menjadi pengungkapan indikator. Lalu, apa yang saya ingin menunjukkan kepada Anda, juga, adalah bagaimana saya dapat mengambil masing-masing baris tabel dan mereka berinteraksi - oh. Tidak. Oh. Juga, saya ingin menunjukkan kepada Anda - di sini, saya dapat menempatkan judul saya navigasi controller, kan? Jadi sebenarnya, Anda akan melihat, segera setelah saya tertanam controller pandangan ini dalam dari controller navigasi, kita melihat ini bar navigasi di bagian atas kami representasi storyboard dari controller tampilan. Jadi, ini memberikan kita, seperti, visual, semacam, membimbing ke layar terlihat kami. Hal ini jelas akan menjadi bar navigasi. Dan apa yang ingin saya lakukan dengan cepat, sekarang, yang dimasukkan ke dalam lain - jadi ini tampilan tabel kontroler yang saya lakukan dengan mengambil salah satu dari ini dan menyeretnya di sini, dan itulah yang memungkinkan saya untuk cepat, benar-benar, membuat tampilan tabel kontroler. Jika kita memiliki waktu meskipun, Anda akan melihat bahwa, pemrograman, itu adalah sedikit lebih sulit untuk membuat tabel controller pandangan, karena ada adalah beberapa metode yang diperlukan bagi Anda untuk, semacam, menulis dalam rangka untuk tampilan tabel controller untuk ditampilkan dengan benar. Namun, saya hanya ingin menunjukkan, sekarang, contoh di mana, jika aku mengambil ini, misalnya - Aku sudah dimasukkan ke dalam tampilan controller lain. Dan sekarang, katakanlah saya ingin mengontrol alt biru pertama saya baris tabel ke sini. Dan aku ingin menelepon Biru ini. Dan kemudian - mari kita lihat. Aku ada di tampilan sekarang, dan saya dapat mengubah latar belakang biru. Jadi, pemberitahuan, di sini, ini drop-down menu juga memberikan Anda sebuah hirarki semua benda-benda. Jadi suatu hal yang penting untuk dicatat, di sini, adalah bahwa semua hal ini, di sini - ini tampilan tabel controller, meja tampilan, tampilan tabel bagian, tampilan tabel sel - semua ini adalah objek, dalam kode. Jadi, Anda tahu, label sekarang berada di bawah tampilan konten, dan sebagainya. Seterusnya dan sebagainya. Jadi, jika kita menjalankan kode ini, kami akan melihat sesuatu - mari kita lihat apakah ini - ya. Jadi, di sana kita pergi. Tapi, jika kita tidak melakukan itu, tidak ada dari hal-hal lain bekerja. Benar? Jadi hanya satu ini bekerja. Dan, demi waktu, saya tidak akan masuk ke dalam, Anda tahu, menempatkan bawah yang lain. Dan ini adalah akhir, semacam, storyboard - apa yang saya ingin menunjukkan Anda untuk storyboard. Dan, saya punya bekerja contoh, sebenarnya, di sini. Jadi, ini adalah storyboard yang saya buat sebelumnya. Jadi, seperti yang Anda lihat, ini adalah kontroler navigasi saya. Kemudian saya memiliki pandangan pertama saya controller, maka saya punya saya tampilan tabel controller, dan kemudian aku memiliki semua ini - jadi sebelumnya, aku melakukan sesuatu yang sangat berbeda. Jadi, alasan-hal. Saya mungkin akan membersihkannya nanti sebelum Saya mengirimnya ke produksi. Tapi, jika kita menjalankan ini, kita akan melihat bahwa semua opsi tersedia bagi kita. Kecuali saya tidak membuat latar belakang warna-warna. Jadi, aplikasi sederhana yang bagus. Sekarang, mari kita mencoba untuk mengatasi pemrograman ini. OK. Jadi, untuk melakukan itu, kita hanya akan untuk memulai sebuah proyek Xcode baru. Kita akan membuat sebuah aplikasi kosong sekarang, karena kita tidak ingin memiliki storyboard. Jadi, saya hanya membatasi diri untuk tidak menggunakan salah satu storyboard, dan aplikasi kosong tidak akan memberi saya storyboard. Ini hanya untuk mencegah diri dari kecurangan. Mari kita lihat. Tunggu. Apakah saya - ya. OK. Benar. Jadi, di sini, kita dibiarkan dengan tidak lain kode. Jadi, biarkan aku memindahkan jendela ini sedikit di atas. Benar. Seperti yang dapat Anda lihat di sini, hanya file kita diberikan adalah AppDelegate.h dan dot m, dan kita tidak memiliki storyboard lagi. Jadi jika kita menjalankan ini, kita masih akan sampai ke layar putih, terima kasih Tuhan. OK - layar putih, tapi tidak ada yang lain. Dan, di sini adalah bagian penting. Ini adalah di mana tindakan terjadi. Pada versi sebelumnya, ada biasanya tidak ada kode di sini, tapi storyboard pada dasarnya memberikan kode untuk bagian ini. Aku tidak akan masuk ke rincian tentang bagaimana. Dan apa yang ingin kita lakukan sekarang adalah, kami ingin untuk masuk ke sini, dan ruang kecil ini mulai menciptakan aplikasi kami lagi. Jadi - ya? AUDIENCE: Zoom? RHED SHI: Zoom. Ya, tentu. OK. Aku akan mengetik, jadi ini seharusnya tidak terlalu banyak masalah. OK. Jadi, pertama, ingat kita ingin menciptakan controller navigasi, kan? Dan juga, seperti yang Anda lihat di sini, Xcode melakukan pekerjaan yang benar-benar hebat self-mengisi. Jadi, seperti yang Anda akan melihat, nama-nama segala sesuatu yang jauh lebih lama dari biasa, tapi Xcode mengisinya untuk Anda. Jadi aku hanya bisa tekan Enter. Jadi, saya ingin membuat navigasi UI pengontrol pointer, dan saya dapat menyebutnya navigationController. Sekarang, apa yang harus saya lakukan sekarang? Setelah tanda sama ini, saya harus, pertama, menciptakannya di dalam memori. Jadi, aku akan melakukan NavigationController alokasi - jadi, ini mirip dengan malloc, bahwa kalian digunakan dalam C - dan kemudian, aku akan init itu. Jadi, itu benar-benar penting bahwa setiap objek yang Anda buat, Anda ingin alokasi dan init itu. Itu akan membuat dan instantialize di dalam memori, dan sekarang Anda dapat menggunakannya. Baiklah? Jika Anda tidak melakukannya, objek tidak tidak ada, dan Anda akan mengalami a bunch masalah. Dan kemudian, saya ingin membuat pandangan controller, kan? Jadi, saya ingin membuat sebuah UIViewController Bintang - jadi, semuanya adalah pointer di Objective-C, dan aku akan melakukan sesuatu yang mirip, di sini - alloc, init. OK. Lalu apa yang akan saya lakukan adalah, saya akan - jadi, ingat ketika kita melakukan yang menanamkan dalam navigasi controller? Ini adalah bagaimana Anda melakukannya dalam kode. Anda akan melakukan navigationController pushViewController - AUDIENCE: [Tak terdengar]. Ini akan terjadi bagi kita, atau -? RHED SHI: Oh, yeah. Tidak. Ini menyukaiku lebih baik. Tidak, itu akan bekerja untuk Anda juga. Jadi, ini semua metode. Jadi pushViewController adalah sebuah metode, dan juga, lebih khusus lagi, ini merupakan metode contoh dari UI pengontrol navigasi. Karena aku harus membuat navigasi UI saya star controller, dan kemudian saya dapat memanggil pushViewController ini pada saya contoh spesifik dari navigasi UI kontroler. AUDIENCE: Apakah kita harus melakukan hal yang tepat kata, atau apakah itu sudah ada untuk itu? RHED SHI: Ya, karena itu metode. Ini seperti fungsi. Ini seperti printf. Ini seperti scanf. Ini seperti strcompare. Kecuali ia tahu apa yang Anda mungkin ingin mengetik, dan melihat bahwa itu akan selalu datang dengan hal-hal yang hukum diperbolehkan untuk Anda. Jadi, jika tidak ada yang muncul di sini, maka ada sesuatu yang salah. Jadi, pushViewController. Jadi, sekarang, saya ingin mendorong saya baru dibuat UIViewController, dan kemudian, animasi - mungkin tidak. Karena ini akan menjadi Pandangan pertama controller. Maksudku, bahkan jika saya membuat animasi, mungkin tidak akan muncul, karena itu adalah layar pertama. Dan ingat kurung. Jadi, ingat bagaimana kami menggunakan kurung? Dan di dalam kurung, yang object panggilan pada metode - jadi objek kita adalah navigasi controller, dan metode ini adalah push controller tampilan animasi. Dan melihat bagaimana dibutuhkan dalam dua argumen, dan mereka dipisahkan oleh, semacam, kata-kata, dan titik dua. Jadi, Objective-C mencoba untuk membuatnya bagus dan mudah bagi Anda untuk membaca keras-keras - kode Anda - dan memilikinya setengah, semacam, masuk akal. Namun, melakukan hal ini tidak cukup. Biarkan aku tampilannya keluar sekarang. Melakukan ini saja tidak cukup untuk mendapatkan apa yang kita punya untuk sebelumnya. Jadi di sini, Anda akan melihat bahwa ada sebenarnya tidak akan menjadi apapun bar, di sini, kan? Tidak ada navigasi bar, yang berarti bahwa kita masih belum mendapatkan itu. Dan kita dapat menguji hal itu, juga, oleh, mungkin, mengubah latar belakang ViewController, kan? ViewController.background-- ah. Jadi, melihat bagaimana ViewController tidak memiliki warna latar belakang, meskipun saya ingin mengaksesnya? Dan itu karena ViewController merupakan wadah untuk pandangan. Jadi, ia memiliki properti tampilan, yang kemudian memiliki warna latar belakang. Dan, aku bisa mengaturnya, semacam perlahan, dengan memanggil warna pada objek UIColor. Jadi, perhatikan di sini, redColor adalah metode. Ini adalah metode kelas UIColor. Karena saya tidak harus membuat contoh aktual dari UIColor dalam rangka untuk memanggil metode di atasnya. Aku hanya, hanya, menyebutnya pada nama jenis-seperti. Aku, seperti yang disebut di int, int jika memiliki, seperti, metode untuk itu, misalnya. Jadi, jika kita menjalankan kode ini, kita akan melihat bahwa latar belakang sebenarnya tidak merah. Ini masih putih. Dan bagaimana kita bisa mendapatkan sekitar itu, perhatikan bagaimana ada self.window tersebut. Artinya, seperti, wadah utama untuk aplikasi Anda. Ini adalah hal yang utama yang berisi segala sesuatu di layar, untuk iPhone atau aplikasi iPad. Dan, mudah, self.window memiliki properti ini disebut RootViewController. Dan itu akan menjadi pointer ke pandangan pertama controller dalam dari aplikasi Anda. Jadi, apa yang ingin kita lakukan di sini, sekarang, adalah untuk mengatur yang sama dengan navigasi kami kontroler. Benar? Karena, secara teknis, navigasi controller adalah pandangan yang sangat pertama kami kontroler. Ini melacak berbagai tampilan lain controller, dan kami mendorong ini controller pandangan ke dalam array yang di controller navigasi. Jadi, Anda tidak ingin melakukan ini. Itu tidak benar-benar membantu Anda. Anda ingin melakukan hal ini, jika Anda ingin melakukan controller navigasi, yang sebagian besar Anda mungkin akan karena Anda akan ingin untuk, semacam, memiliki semacam, seperti, menu untuk kembali ke atau homepage untuk kembali ke, daripada layar kosong. Ya? AUDIENCE: Apakah tidak nyaman bagi Anda untuk memperbesar pada - RHED SHI: Ya. Jadi, ya. Ini adalah kode, dan sekarang mari kita menguji itu. Jadi, di sana kita pergi. Sihir. Jadi, OK. Terima kasih. OK. Jadi sekarang, apa yang ingin kita lakukan adalah - jadi, kita agak terbatas, di sini, kan? Kami berpotensi menulis segala sesuatu dalam fungsi yang satu ini. Tapi, itu belum seberapa pengembangan iOS biasanya bekerja. Jadi, apa yang akan kita lakukan adalah, kita akan membuat beberapa file baru. Tapi, lebih khusus lagi, kita akan membuat kelas Objective-C yang lain, atau obyek lain - kelas dan objek yang dipertukarkan di sini. Dan, inilah cara saya bisa, berpotensi, membuat kelas lain dari U kontroler. Jadi, itu adalah sub-kelas, karena Anda akan melihat, di sini, itu adalah sub-kelas dari Tampilan UI controller, tapi aku bisa menyebutnya nama lain di sini. Aku bisa menelepon CS50 ini, saya bisa menelepon controller pandangan ini, saya bisa menelepon Pemandangan bla ini kontroler - apapun yang saya inginkan. Ini hanyalah nama untuk kelas. Namun, itu akan menjadi penting karena, pada dasarnya, apa yang saya lakukan di sini adalah, aku menciptakan nama kelas lain. Jadi, itu akan menjadi, seperti, beberapa semacam jenis atau objek. Jadi, harus sedikit generik. Ini tidak akan menjadi sangat spesifik. Dan juga, saya ingin menunjukkan dua pilihan ini. Karena kita melakukan segala sesuatu dalam kode, kadang-kadang jauh lebih mudah untuk membawa file antarmuka, sehingga Aku benar-benar dapat drag dan drop, seperti yang kita lakukan sebelumnya dengan storyboard - Anda tahu, label, atau tombol, atau apapun yang lain. Jadi, xibs adalah file yang memungkinkan Anda untuk melakukan itu, dan Anda harus hook it up pandangan ini berkas kontroler. Jadi, aku akan sengaja tidak memeriksa ini. Biasanya aku akan memeriksa ini, dan jika saya hanya melakukan ini untuk iPhone atau iPad, saya akan memeriksa ini dan hanya memiliki satu untuk, Anda tahu, iPhone atau iPad. Tapi karena aku melakukan universal, aku akan untuk membuat dua dari mereka kemudian. Jadi, aku akan sengaja hapus centang ini. Hal ini juga sangat penting. Banyak kali, aku sudah bug di mana ini tidak diperiksa. Jadi, jelas, file ini tidak, semacam, seperti, disertakan atau diimpor dalam folder tes ini. Jadi, kode saya sama sekali tidak tahu keberadaan file ini, dan yang menyebabkan banyak rasa sakit dan jam debugging. Tapi, pastikan ini dicentang sehingga itu, Anda tahu, target ini file untuk aplikasi ini. OK. Jadi, sekarang kita telah membuat dua file baru. Dan file-file ini terlihat cukup kosong. Dan, sebenarnya, mari kita juga terus on dengan menciptakan file xib. Jadi, sebelumnya, aku berada di Kakao Touch drop-down. Sekarang, aku akan pergi ke Pengguna Antarmuka sentuh, dan seperti yang Anda lihat, saya dapat membuat storyboard. Jadi, bahkan saya mulai dengan kosong aplikasi, saya masih dapat menggunakan storyboard. Meskipun, hal itu akan sulit dalam hal bagaimana Anda ingin menghubungkan bahwa untuk kode Anda. Jadi, saya tidak akan pergi ke sana. Tapi, apa yang ingin kita lakukan sekarang adalah membuat tampilan. Dan Anda dapat memilih untuk iPhone atau iPad. Dan biasanya, untuk menunjukkan Perbedaan - jika Anda melakukan aplikasi universal - Anda juga memasang iPhone garis bawah, atau Anda dapat melakukan Twiddly. Itu tidak terlalu penting. Ini hanya bagi Anda untuk membedakan pandangan mana adalah untuk perangkat yang. Jadi, sekarang lihat. Saya memiliki layar yang saya dapat bekerja dengan. Jadi, misalnya, saya bisa menempatkan label di sini, Anda tahu, dan saya juga dapat menempatkan tombol lain di sini. Aku tidak akan repot-repot mengubah nilai-nilai di sini. Tapi, apa yang penting di sini adalah bahwa pemilik file - jadi, aku dalam iPhone pandangan, xib file iPhone. Dan turun di daerah navigasi ini atau menu drop-down, saya ingin pergi ke pemilik file. Dan ini adalah benar-benar Langkah penting di sini. Saya ingin membuat tampilan kelas controller, sehingga file xib ini akan terkait dengan my view kontroler. Dan apa pun yang saya lakukan dalam pandangan saya kontroler pemrograman adalah akan tercermin di sini. Jadi, bagaimanapun, perhatikan bahwa - sebenarnya, mari kita membuat pandangan ini latar belakang biru, misalnya. Atau hijau. Dan kemudian, jadi jika Anda akan melihat, kembali kode ini, ini adalah di mana kita harus kita pengontrol navigasi. Meskipun kami melakukan langkah itu, itu masih akan menjadi merah, bukan hijau. Dan ada alasan mengapa. Itu karena, ketika kita inited controller pandangan kami, di sini - Maaf, itu sedikit gila - ketika kita inited controller pandangan kami di sini, kami inited itu dari jenis umum UIViewController. OK? Jadi kita bahkan tidak melakukan dengan kelas ini. Jadi ingat, ini seperti kelas sekarang. Hal ini dapat dianggap sebagai tipe, hanya sebagai UIViewController adalah tipe. Dan untuk menggunakannya, apa yang perlu kita lakukan adalah impor - impor ViewController - dan, seperti yang Anda lihat, itu AutoFills untuk saya. Jadi, ViewController - dan sekarang, di sini, saya dapat mengubah ini UIViewController ke ViewController. Dan sekarang, di sini, saya dapat mengubah ini untuk ViewController. Mari kita jalankan ini lagi. Ini masih merah. Dan alasan mengapa hal itu masih merah karena - woah, apa yang terjadi di sana? Kami ingin mengasosiasikan xib ini file dengan controller tampilan. Namun, dalam rangka untuk benar-benar melakukan itu, kita perlu untuk pergi ke dalam ini. Dan ketika kita melakukan init, kita ingin melakukan initWithNibName, dan kemudian kita ingin lakukan di tali View_iPhone, misalnya. Anda dapat mengabaikan bundel sini. Dan ini akan memungkinkan kita, sebenarnya - uh oh, ada masalah. Benar. Jadi, ada masalah karena, dalam File tampilan xib kami, kami memiliki label dan kita memiliki sebuah tombol. Namun, meskipun kami telah terhubung kedua, tidak ada dalam ViewController.h atau ViewController.m yang mencerminkan tombol atau label-label. Jadi, kita perlu menulis mereka sebagai sifat controller tampilan. Jadi, ini adalah bagaimana Anda mendeklarasikan properti. Dibutuhkan dalam, biasanya, dua pilihan tersebut. Untuk tujuan kita dan seminar ini, Saya akan mengatakan bahwa, secara umum, kebanyakan properti yang nonatomic dan mempertahankan. Anda dapat membaca oleh Google mencari, Anda tahu, perbedaan antara nonatomic dan mempertahankan, Anda tahu, Google atau sesuatu. Dan aku akan membawa Anda ke, seperti, Stack Overflow, di mana orang akan memiliki jawaban untuk perbedaan antara mereka. Tapi untuk saat ini, itulah yang kita ingin peduli dengan. Dan kami ingin membuat label UI, bintang, dan kita bisa menyebutnya apa pun yang kita inginkan. Kita bisa menyebutnya, Anda tahu, label. Dan, kita akan membuat yang lain satu untuk tombol. Dan ingat untuk menyertakan tanda bintang, karena kita berhadapan dengan pointer cukup banyak di mana-mana di dalam Objective-C. Namun, itu tetap tidak akan memecahkan masalah, seperti yang Anda lihat di sini. Dan alasannya adalah karena, setiap kali kita ingin menghubungkan label xib file atau tombol untuk program, atau header dan file implementasi, kita ingin tambahkan potongan kode ini - stopkontak. Perhatikan bahwa itu adalah kata kuncinya. Dan, segera setelah saya selesai mengetik itu keluar, harus memiliki ini dua lingkaran, di sini. Biasanya, mereka tidak terisi Saya tidak yakin mengapa mereka. Tapi biasanya, Anda akan harus secara manual menghubungkan mereka dengan pergi ke sisi daerah utilitas. Jadi, sekarang, aku punya label saya dipilih, dan saya ingin menyeret baru ini referensi outlet ke pemilik file saya, dan kemudian klik pada Label. Jadi sekarang, akhirnya, label ini terhubung ke label ini. Dan label ini adalah apa yang akan kita menggunakan pemrograman untuk mengubah nya teks, font, latar belakang warna, dan sebagainya. Jadi, kenapa tidak kita lakukan sama untuk tombol? Dan seperti yang Anda akan melihat, untuk tombol, itu sedikit lebih rumit. Karena, maksudku, Anda seharusnya pers pada tombol, sehingga punya banyak pilihan untuk bagaimana pengguna dapat menekan tombol. Dan kemudian, kita akan lihat nanti bahwa kita dapat menghubungkan hal ini kepada kami kode untuk membuatnya bekerja. Jadi, untuk saat ini meskipun, kita ingin terhubung ke tombol yang sebenarnya dalam kode kita. Jadi kami pergi ke outlet referensi baru, dan kemudian melakukan tombol. Sekarang, mari kita jalankan ini lagi. Uh oh. OK. Aku tidak tahu apa yang terjadi di sini sekarang. Whoa. Hanya satu saat, di sini. Sebenarnya, mengapa kita tidak mengambil lihat contoh lain di kepentingan waktu. OK. Jadi, inilah yang lebih mudah disiapkan contoh ViewController. Seperti yang dapat Anda lihat di sini, saya mencantumkan properti untuk label dan tombol. Dan kemudian, potongan kode ini di sini - IBAction ini - adalah koneksi ke tombol ini di sini. Jadi seperti yang Anda lihat di sini, Sentuh Inside terhubung ke pemilih disebut Tombol Ditekan. Jadi, kita benar-benar bisa pergi melalui gerak lagi, di sini, dengan mengambil Sentuh Up Di dalam dan menyeretnya ke Pemilik file, dan kemudian klik pada Tombol Ditekan. Sekarang, mari kita menjalankan kode kita. Jadi sekarang, tombol ini sekarang bekerja dan akan membawa kita ke halaman berikutnya. Dan, dari segi tampilan controller kita, ini adalah bagian dari kode yang mengambil peduli Tombol ditekan. Dan penting untuk dicatat di sini, bahwa Saya telah membuat jenis lain dari pandangan pengontrol disebut meja controller tampilan. Jadi, ini mirip dengan kembali di storyboard, ketika saya menyeret salah satu ini tampilan tabel pengendali ke dalam storyboard. Aku menciptakan lain Pointer ke tampilan tabel controller, alokasi dan init-ing, dan kemudian melakukan diri dot navigasi controller, mendorong ViewController, ini baru viewController. Dan Aku telah menetapkan animasi untuk ya, karena sekarang dalam aplikasi saya, dan saya ingin benar-benar melihat animasi akan dari halaman rumah ke meja controller tampilan. AUDIENCE: Apakah Anda masih khawatir tentang pengumpulan sampah? RHED SHI: Apa itu? Tidak. Jadi, pertanyaannya adalah, apakah Anda memiliki untuk bekerja dengan pengumpulan sampah? Jadi, Xcode 4 memiliki seperti ARC, yang menghitung referensi otomatis. Dan, biasanya ketika Anda mulai baru proyek, Anda akan memeriksa itu, karena tidak ada yang benar-benar ingin berurusan dengan membebaskan memori dan hal-hal. Tapi saya pikir di Xcode 5, bahkan tidak ada bahwa opsi pada proyek baru. Jadi, secara otomatis melakukan itu untuk Anda. Ya? AUDIENCE: Dapatkah Anda mengekspor PDF dalam storyboard Anda? RHED SHI: Ya, pasti. Jadi, semua ini akan dimasukkan dalam kode sumber, sehingga kalian dapat memeriksa proyek Xcode sebenarnya untuk itu. Ya? AUDIENCE: Tapi, maksudku, seperti, bisa saya mencetak PDF dengan storyboard saya? Jika saya hanya ingin mengekspor gambar untuk menunjukkan seseorang. RHED SHI: Oh yeah. Saya pikir, mungkin, Anda hanya dapat mengambil screen shot. Ya, dan mengirim mereka layar tembakan atau sesuatu. Ya. Jadi, mari kita lihat. Dalam kepentingan waktu, saya pikir itu semua aku bisa menutupi hari ini. Tapi, aku tahu itu, sebenarnya, hanya hampir tidak menyentuh permukaan iOS pembangunan. Jadi, jangan ragu untuk menghubungi saya jika Anda memiliki pertanyaan tentang iOS pembangunan. Dan, mudah-mudahan, saya akan mampu membersihkan up beberapa kode sumbernya file kode, sehingga Anda akan memiliki beberapa contoh benar-benar baik untuk bekerja dengan. Selain itu, jika kalian akan ke CS50 Hackathon, saya mungkin atau mungkin tidak berada di sana, dan saya dapat membantu dengan beberapa pengembangan iOS, juga. Jadi, terima kasih banyak, guys.