Professional Documents
Culture Documents
M C L C
CHNG I CHUN B TRC KHI BT U XY DNG NG DNG ........... 1 1.1 CHUN B H IU HNH MAC OS .................................................................... 2 1.1.1 Lp Trnh ng Dng Iphone Trn Windows .................................................. 2 1.1.2 S Dng Sn Phm Chnh Hng Apple............................................................ 3 1.1.3 Chy H iu Hnh Mac Os Trn Pc/Laptop Intel/Amd Ti Sao Khng? ....................................................................................................................................... 5 1.2 PHN MM XCODE .................................................................................................. 7 1.2.1 Ci t Thng Qua Bn Ti V T Trang Dnh Cho Developer .................. 8 1.2.2 Ci t Thng Qua Apple Mac Store ............................................................. 10 1.2.3 Ci t T Bn Xcode c Chia S Trn Internet .................................... 11 CHNG II TM HIU XCODE V IOS SIMULATOR ......................................... 12 2.1 TM HIU XCODE 5 ................................................................................................ 13 2.1.1 Gii Thiu V Xcode 5 ..................................................................................... 13 2.1.2 Thao Tc To ng Dng Mi ......................................................................... 16 2.1.3 Tm Hiu Giao Din Xcode V Mt S Tnh Nng ....................................... 20 2.1.4 Thit K Giao Din ........................................................................................... 26 2.1.5 Vit Code ........................................................................................................... 29 2.1.6 Thc Thi V Kim Tra Li Ca ng Dng ................................................... 34 2.2 TM HIU IOS SIMULATOR ................................................................................. 38 2.2.1 Gii Thiu iOS Simulator ................................................................................ 38 2.2.2 Tm Hiu iOS Simulator .................................................................................. 38 CHNG III NGN NG OBJECTIVE-C ................................................................ 48 3.1 GII THIU NGN NG OBJECTIVED-C ........................................................ 49 3.2 KHAI BO BIN - CCH S DNG ..................................................................... 49 3.2.1 Bin ..................................................................................................................... 49 3.2.2 Quy Tc t Tn ............................................................................................... 50 3.3 KIU D LIU .......................................................................................................... 50
3.4 PHP TON ............................................................................................................... 51 3.5 CH THCH CODE .................................................................................................. 51 3.6 XUT D LIU RA MN HNH ............................................................................ 52 3.7 FUNCTION ................................................................................................................. 54 3.7.1 nh Ngha ......................................................................................................... 54 3.7.2 Phng Thc Khng C Tham S Truyn Vo ........................................... 54 3.7.3 Phng Thc C 1 Tham S Truyn Vo ...................................................... 55 3.7.4 Phng Thc C Nhiu Tham S Truyn Vo.............................................. 55 3.8 CU TRC IU KIN ........................................................................................... 57 3.8.1 Cu Lnh If ....................................................................................................... 57 3.8.2 Cu Lnh If Else ............................................................................................ 57 3.8.3 Cu Lnh Switch - Case ................................................................................... 58 3.9 Cu Trc Lp .............................................................................................................. 59 3.9.1 Vng Lp For .................................................................................................... 59 3.9.2 Vng Lp While ................................................................................................ 59 3.9.3 Vng Lp Do-While .......................................................................................... 60 3.10 MNG........................................................................................................................ 61 3.10.1 nh Ngha ....................................................................................................... 61 3.10.2 Mng Nsarray ................................................................................................. 61 3.11 CHUI I TNG NSSTRING...................................................................... 62 3.11.1 Khi To Chui............................................................................................... 62 3.11.2 i Tng NSString ....................................................................................... 63 3.11.3 Tm Kim Bn Trong Chui .......................................................................... 63 3.11.4 Tm Chui V Thay N Thnh Chui Khc ................................................ 64 3.11.5 Xo Ni Dung Bn Trong Chui ................................................................... 64 3.11.6 Ct Chui ......................................................................................................... 65 3.11.7 Chn K T Vo Trong Chui ...................................................................... 66 3.11.8 Chn K T Vo Cui Chui ........................................................................ 66 3.11.8 So Snh Chui ................................................................................................. 67 3.11.9 So Snh Chui Vi K T u V Cui Chui ........................................... 67
3.11.10 Chuyn i Hnh Dng Ca Ch................................................................ 68 3.11.11 Chuyn Chui Thnh Dng S .................................................................... 70 CHNG IV MT S THAO TC C BN ............................................................. 72 4.1 APP ICON LOADING SCREEN .......................................................................... 73 4.1.1 App Icon............................................................................................................. 73 4.1.2 Loading Screen .................................................................................................. 75 4.2 THAY I APP NAME ............................................................................................ 76 4.3 N STATUS BAR ...................................................................................................... 78 4.4 BACKGROUND ......................................................................................................... 79 4.4.1 Background Image............................................................................................ 79 4.4.2 Background Color ............................................................................................ 83 4.5 THM FRAMEWORK ............................................................................................. 84 CHNG V MT S I TNG C BN ............................................................ 86 5.1 I TNG LABEL BUTTON TEXT FIELD ............................................... 87 5.1.1 Gii Thiu .......................................................................................................... 87 5.1.2 V D .................................................................................................................. 90 5.2 KT NI C S D LIU VI SQLITE ............................................................. 94 5.2.1 Gii Thiu .......................................................................................................... 94 5.2.2 Ci t Sqlite Manager Cho Firefox .............................................................. 94 5.2.3 Cu Hnh ng Dng Tng Tc Vi Sqlite ............................................. 95 5.2.4 Cc Hm Trong Sqlite ...................................................................................... 96 5.2.5 V D .................................................................................................................. 99 5.3 S DNG CAMERA IPHONE .............................................................................. 109 5.3.1 Gii Thiu ........................................................................................................ 109 5.3.2 V D ................................................................................................................ 109 5.4 UIIMAGE .................................................................................................................. 113 5.4.1 Gii Thiu ........................................................................................................ 113 5.4.2 Cc nh Dng nh H Tr Trn Iphone ................................................... 114 5.4.3 V D ................................................................................................................ 114 5.5 UIALERT VIEW ...................................................................................................... 121
5.5.1 Gii Thiu ........................................................................................................ 121 5.5.2 c im.......................................................................................................... 121 5.5.3 V D ................................................................................................................ 122 5.6 UISLIDER ................................................................................................................. 124 5.6.1 Gii Thiu ........................................................................................................ 124 5.6.2 c im.......................................................................................................... 125 5.6.3 V D ................................................................................................................ 125 5.7 UIWEBVIEW ........................................................................................................... 128 5.7.1 Gii Thiu ........................................................................................................ 128 5.7.2 V D ................................................................................................................ 129 5.8 ACTIVITY INDICATOR VIEW ............................................................................ 132 5.8.1 Gii Thiu ........................................................................................................ 132 5.8.2 V D ................................................................................................................ 132 5.9 ACTIONSHEET ....................................................................................................... 136 5.9.1 Gii Thiu ........................................................................................................ 136 5.9.2 c im.......................................................................................................... 136 5.9.3 V D ................................................................................................................ 137 5.10 MK MAP VIEW ..................................................................................................... 138 5.10.1 Gii Thiu ...................................................................................................... 138 5.10.2 V D .............................................................................................................. 139 5.11 TABLE VIEW CONTROLLER ........................................................................... 143 5.11.1 Gii Thiu ...................................................................................................... 143 5.11.2 V D .............................................................................................................. 143 5.12 SEARCH BAR ........................................................................................................ 147 5.12.1 Gii Thiu ...................................................................................................... 147 5.12.2 V D .............................................................................................................. 148 5.13 TRUYN D LIU GIA CC VIEW .............................................................. 152 5.13.1 Gii Thiu ...................................................................................................... 152 5.13.2 V D .............................................................................................................. 152 CHNG VI HNG DN XY DNG PHN MM .......................................... 157
6.1 PHN MM KIM TRA M VIN ........................................................................ 158 6.1.1 Gii Thiu ........................................................................................................ 158 6.1.2 Chun B .......................................................................................................... 158 6.1.3 Cu Trc Phn Mm ...................................................................................... 158 6.1.4 C Ch Vn Hnh ........................................................................................... 159 6.1.5 Tnh Nng ........................................................................................................ 160 6.1.6 Tin Hnh ........................................................................................................ 163 6.2 PHN MM TM KIM A IM XUNG QUANH (PLACESNEARME) .. 220 6.2.1 Gii Thiu ........................................................................................................ 220 6.2.2 Chun B .......................................................................................................... 220 6.2.3 Cu Trc Phn Mm ...................................................................................... 220 6.2.4 C Ch Vn Hnh Ca Placesnearme .......................................................... 221 6.2.5 Tnh Nng ........................................................................................................ 222 6.2.6 Tin Hnh ........................................................................................................ 226 CHNG VII A NG DNG LN IPHONE ...................................................... 385 7.1 GII THIU ............................................................................................................. 386 7.2 QU TRNH CHUN B ........................................................................................ 386 7.3 TIN HNH ............................................................................................................. 388 CHNG VIII MT S VN KHC ................................................................ 396 8.1 XY DNG NG DNG CHO IOS 6 - IOS 6.1 TRN XCODE 5 ................... 397 8.2 XY DNG NG DNG H TR NHIU VERSION IOS ............................. 403 CU HI THNG GP ............................................................................................ 407 PH LC ........................................................................................................................ 411
LI M U
Ngy nay xu hng s dng Smartphone v my tnh bng ang gia tng nhanh chng trn th gii ni chung v Vit Nam ni ring, trong Vit Nam hin ang ng th hai th gii v tc tng trng smartphone & my tnh bng vi tc tng trng 266%. Android, iOS, Windows Phone l nhng h iu hnh chy trn Smartphone v my tnh bng ph bin nht th gii: Android 75%, iOS 17,3%, Windows Phone 3,2%. Ti Vit Nam, theo nghin cu ca IDC, vo thi im qu 2/2013, iOS ang chim t l 1.6% trn tng s thit b phn phi ti Vit Nam, ng th ba sau Android v Windows Phone. Cng vi s tng trng ca Smartphone v cc h iu hnh chy trn Smartphone, s lng ng dng cho cc h iu hnh ngy cng tng, tnh cho n ht nm 2012, s lng ng dng iOS trn Apple App Store hn 775.000 ng dng v Google Play c hn 700.000 ng dng.Vi s pht trin quy m ln ca ng dng, nhu cu tm hiu v lp trnh ng dng cho cc h iu hnh cng tng dn. Tuy nhin, thc tin cho thy, vic tm hiu cng nh tham gia cc lp hc v lp trnh ng dng iPhone Vit Nam cn nhiu hn ch v kh khn.Cc lp dy lp trnh ng dng iPhone ch mi xut hin nhiu trong thi gian gn y, do s lng vn cn hn ch. Bn cnh ngun ti liu ting Vit cn t, vic tm hiu v s dng cng c lp trnh cng nh tham kho ti liu ting Anh v lp trnh ng dng iPhone i hi ngi tm hiu phi tiu tn mt khong thi gian di cng nh c mt t hiu bit v lp trnh v kh nng c hiu ting Anh tt. Hn na cc ti liu ting Vit do cc trung tm ging dy lp trnh iPhone bin son ch lu hnh ni b, ngi tm hiu buc phi chi mt khon tin tham d lp hc mi c th c c nhng ti liu ny. Vi mong mun tm hiu cch xy dng ng dng iPhone c thm kin thc mi, gip ch cho qu trnh lm vic sau khi ra trng cng nh gim bt nhng kh khn cho ngi mi bt u tm hiu v lp trnh ng dng trn iPhone, nhm nghin cu thc
hin nghin cu, xy dng mt s ng dng trn iPhone da trn kin thc tm hiu c, t tng hp v xy dng thnh ti liu Hng dn xy dng ng dng trn iPhone. Vi nhng v d ring cho tng i tng, ngi c s d dng nm bt v hiu r cch s dng, chc nng ca tng i tng khc nhau. Bn cnh ti liu cn km theo hng dn chi tit tng bc xy dng mt vi ng dng thc t m nhm nghin cu thc hin c trong qu trnh nghin cu. Hi vng rng ni dung ca ti liu ny s gip ch phn no cho mi ngi khi bt u tm hiu v lp trnh iPhone, t c th tit kim bt thi gian cho qu trnh tm hiu. Mi kin ng gp xin lin lc qua email caothienmokimlong@gmail.com hoc anhtiep20@gmail.com. Rt mong nhn c s gp chn thnh t mi ngi ti liu hng dn ngy cng hon thin hn. Nhm nghin cu Nguyn Anh Tip Cao Thanh Vng
CHNG I CHUN B TRC KHI BT U XY DNG NG DNG Qu trnh chun b trc khi bt u lp trnh ng dng trn iPhone l qu trnh c bn m bn phi chun b cho tht k lng. Qu trnh ny s chun b cho bn cc iu kin cn thit c th thun li bt u tm hiu v lp trnh ng dng trn iPhone. Trong chng ny, bn s c gii thiu s lc v qu trnh chun b, cc cch thc bn c c h iu hnh Mac OS v b cng c Xcode. Hai iu kin ny l iu kin cn thit bt u lp trnh iOS. Tuy nhin ni dung phn chun b h iu hnh Mac OS ch c gii thiu s lc vi bn cc cch thc c c mt h iu hnh Mac OS n nh (cch thc ci t Mac OS trn thit b Intel/AMD) cho vic lp trnh ch khng i sau vo hng dn c th bi iu thuc v mt lnh vc kin thc khc i hi phi o su tm hiu.
1.1 CHUN B H IU HNH MAC OS Vic lp trnh ng dng cho iPhone i hi bn phi s dng b cng c do chnh Apple cung cp gi l Xcode, v b cng c ny chy trn nn tng ca h iu hnh Mac OS. Nu bn mun bt u cho vic xy dng ng dng cho iPhone th bn nn bt u ngay vi vic chun b cho mnh mt chic my chy h iu hnh Mac OS. Sau y chng ti s gii thiu cho bn mt s cch thc bn c th s hu cho mnh mt h iu hnh Mac OS ph hp. 1.1.1 Lp Trnh ng Dng Iphone Trn Windows Nu bn mun lp trnh ng dng cho iPhone, nhng li mun thc hin trn mi trng Windows c th thao tc thm cc cng vic khc trn mi trng ny, la chn tt nht cho bn lc ny chnh l s dng mt my o chy h iu hnh Mac OS lp trnh. Tuy nhin nu bn la chn phng n ny, cu hnh my ca bn phi mnh, CPU x l tt, v bn nn dnh t nht 2G RAM cho my o hot ng tt hn. Lm cch no ti c th s hu mt my o chy Mac OS cho ring mnh? Bn c hai cch c th s hu mt my o chy Mac OS cho mnh. Cch mt l bn chun b mt a ci Mac OS v phn mm h tr to my o nh VMWare , Virtualbox sau bn tin hnh ci t bnh thng bng tay. a ci t Mac OS bn c th mua cc tim bn a phn mm. Hoc bn c th ti v trn mng mt a ci Mac OS ui .iso ( Thng th trn mng c a ci ui .dmg, bn phi chuyn i qua ui .iso c h tr tt nht t phn mm to my o). Cch th hai l bn ti v mt my o hon chnh c ci t sn Mac OS, sau m ln bng phn mm chy my o l bn c th c mt h iu hnh Mac OS. Bn nn truy cp vo Din n Tinh T: www.tinhte.vn/forums/chuyen-de-hackintosh.361/ . Cng ng Hackinosh: www.facebook.com/groups/hackintoshvietnam/.
tm hiu thm tin trnh ci t my o, cc vn xy ra trong qu trnh ci. Ngoi ra bn cng c th tm cc my o chy Mac OS ci t sn ti Soul Dev Team: http://www.souldevteam.net/ . 1.1.2 S Dng Sn Phm Chnh Hng Apple Nu gia nh bn c iu kin, bn c th mua ngay cho mnh mt chic my Apple chnh hng, s dng trn vn tnh nng cng nh s h tr ti a t Apple. Bn truy cp vo www.apple.com , chn Store, sau la chn Shop Mac n chuyn mc bn cc sn phm chy Mac OS ca Apple. Ti y bn c th la chn nhiu loi sn phm khc nhau nh Macbook Air, Macbook Pro, iMac, Mac mini.
Hnh 1.1 Truy cp Store Mac OS Ty theo s thch v nhu cu, cng nh kh nng ti chnh m bn la chn cho mnh mt chic my thch hp. Bn c th thanh ton cho Apple v i hng c chuyn v, hoc tm n cc trung tm bn hng ca Apple gn nh mua. Hoc bn cng c th truy cp vo a ch www.apple.com/asia/reseller/ tm kim cc a im bn hng ca Apple gn nht. Vit Nam, bn hy truy cp vo trang
3
www.icenter.com.vn c th nhanh chng tm c ca hng bn sn phm ca Apple gn nht ni bn sng. Vic ny gip bn c th nhanh chng c trong tay mt sn phm chnh hng Apple, thanh ton tin li m khng phi tn thi gian cho vic chuyn khon thanh ton cng nh ch i vn chuyn sn phm t nc ngoi v. Nu mun tit kim thm chi ph bn c th truy cp www.store.apple.com/us/browse/home/specialdeals/mac tm mua cc gim phm Refurbished ca Apple vi mc gi thp hn.
Hnh 1.2 Store Refurbished Nu bn mun mua my chnh hng Apple vi gi r hn na, th vic mua li sn phm qua s dng l mt gi ng cho bn cn nhc. i vi vic mua li my qua s dng bn c th vo mt s trang mua bn c cht lng tm mua sn phm ph hp vi ti tin. Chng hn nh cc trang www.5giay.vn, www.nhattao.com .. l cc trang vi rt nhiu s chn, cc dng my a dng cng nh mc tin khc nhau, ty theo nhu cn v iu kin cho php m bn c th tm c mt chic my ng mnh.
Hnh 1.3 Mua li my c Nu bn la chn mua my c, phi la chn tht k lng t i my n cu hnh, tt nht nn chn mua nhng my sn xut trong 1-2 nm gn nht, c bit bn phi kim tra xem my mnh mun mua c h tr nhng phin bn Mac OS no. V sao phi nh vy ? Bi v Xcode 5 chy trn Mac OS 8 tr ln, nu bn chn mua my ch h tr Mac OS 7 tr v trc, th bn khng th ci c Xcode 5 m ch c th s dng cc phin bn thp hn. 1.1.3 Chy H iu Hnh Mac Os Trn Pc/Laptop Intel/Amd Ti Sao Khng? Vic ci Mac OS ln chic PC hay laptop ca bn cng l mt phng php tt va c c h iu hnh Mac OS, va c thm kinh nghim trong qu trnh ci t, v hn na l tit kim c chi ph. C hai dng ci t hackintosh l ci t t mt bn c chnh sa sn nh iAtkos ( h tr dng my intel ) hay Niresh (h tr thm dng my AMD) v ci t t a gc ca Apple (Mac OS Retail) . Dng ci t t a gc ca Apple i hi bn sau khi ci t phi tin hnh thm nhiu thao tc khc c th c
5
Hnh 1.4 iATKOS v Niresh Bn c hai phng n la chn nu mun chy Mac OS ln my ca mnh: t ci th cng v thu ngi ci t. Nu bn thu ngi ci t, chi ph thng khong t 100.000 vn n 200.000 vn ty theo yu cu ci t nh th no.
Vi vic thu ngi ci, bn ch gn bo cu hnh my cho ngi ci t h quyt nh v cho bn li khuyn. Bi vic ci t Hackintosh ph thuc rt nhiu vo tng thch phn cng ca thit b vi h iu hnh Mac OS, do khng phi my no cng c th ci c. Tuy nhin phng n ny gip bn vt v hn, cng nh tit kim c thi gian hn. Mt phng n khc l bn t ci. Vi cch la chn ny, bn phi tm hiu v Hackintosh, cng nh cc lu khi ci t, cc li xy ra v cch khc phc Nu bn la chn cch ny, bn nn tm hiu mt s din n, hi nhm chuyn v Hackintosh c thm kin thc, kinh nghim v s tr gip t cng ng. y chng ti gii thiu cho bn hai a ch uy tn v Hackintosh: - Chuyn Hackintosh trn Tinh T a ch: www.tinhte.vn/forums/chuyende-hackintosh.361/ - Group Hackintosh We Love Mac a ch: www.facebook.com/groups/hackintoshvietnam/ Ti y bn s tm c nhiu ti liu hng dn cng nh s gip tn tnh ca mi ngi, hi vng bn s c mt h iu hnh Mac OS hon chnh. Bn c bit: - Phn cng ca my tnh rt quan trng khi quyt nh ci Mac OS ln my tnh thng thng v khng phi phn cng no cng c th tm c Kext (C th hiu ging nh Driver cho thit b trn h iu hnh Windows. - Card VGA Intel Graphic HD 4000 v Intel Graphic HD 3000 c Mac OS h tr Kext rt tt. - a phn dng HP Probook h tr tt Hackintosh. 1.2 PHN MM XCODE Sau khi bn c c h iu hnh Mac OS, vic tip theo bn phi lm trc khi c th bt u lp trnh ng dng iPhone l ci b cng c lp trnh Xcode do Apple cung
7
cp cho cc nh lp trnh ng dng, cc nh lp trnh c th pht trin ng dng cho c iOS ln Mac OS. Vic ci t Xcode c nhiu cch, ty theo bn chn la cch no ph hp vi bn thn. 1.2.1 Ci t Thng Qua Bn Ti V T Trang Dnh Cho Developer Bn truy cp vo trang www.developer.apple.com tin hnh ti phin bn Xcode mi nht ( hoc cc phin bn khc ty theo nhu cu ca bn).
Hnh 1.6 Ti Xcode t trang Developer Tip theo bn la chn View Download.
Hnh 1.7 Chn View Download Apple s yu cu bn ng nhp ti khon Developer ID tip tc.
Hnh 1.8 ng nhp Developer ID Sau khi bn ng nhp bng ti khon Developer xong, thc hin theo hng dn, bn s ti v c phn mm Xcode v tin hnh ci t trn my.
Vi ti khon Developer ID vi gi 99$ / nm, bn s lun c Apple cp nht thng tin cng ngh mi, cng nh h tr, s dng trc cc phin bn mi ca Apple nh cc bn preview iOS, Mac OS, Xcode 1.2.2 Ci t Thng Qua Apple Mac Store y l cch ph bin nht, v vic ti Xcode trn Apple Store l min ph, v ch cn bn c mt ti khon Apple ID l c, khng yu cu phi l Developer ID. Bn ch cn truy cp vo Apple Mac Store v tm kim Xcode, bn s thy kt qu l phn mm Xcode Free, cng vic by gi l bn ch cn Install v ch i hon tt.
10
Trong App Store bn cng c th tm c nhiu gio trnh, bi ging v lp trnh ng dng bng Xcode. 1.2.3 Ci t T Bn Xcode c Chia S Trn Internet i vi cch ci t ny, bn ch cn truy cp internet v tm bn ci t Xcode c chia s trn mng v ti v ci t trn my ca bn. Tuy nhin bn s mt thi gian tm kim trn internet tm c bn ci t va , tc ti tt nht.
11
CHNG II TM HIU XCODE V IOS SIMULATOR Chng ny s mang n cho bn kin thc v b cng c Xcode cng nh cng c gi lp h iu hnh iOS l iOS Simulator. Qua nhng kin thc c cung cp, bn s nm r v giao din, mt s tnh nng, cc button v cng dng ca n trn Xcode v iOS Simulator. Ngoi ra, bn s c hng dn mt s thao tc c bn khi s dng Xcode, iOS Simulator t bn s d dng hn trong vic s dng b cng c ny trong qu trnh lp trnh ng dng iPhone v sau.
2.1 TM HIU XCODE 5 2.1.1 Gii Thiu V Xcode 5 Phn mm Xcode l b cng c do Apple cung cp cho cc lp trnh vin lp trnh ng dng cho cc thit b chy h iu hnh ca Apple. Phin bn mi nht hin nay ca Xcode l bn Xcode 5 trn trang Developer ca Apple.
Hnh 2.1 Phin bn Xcode 5 trn trang Apple Giao din lm vic ca Xcode gm c 5 phn chnh : Toolbar, Editor area, Navigator area, Debug area, Utility area. - Debug area : y l vng h tr bn trong qu trnh debug li ca chng trnh. - Toolbar area: vng cha cc cng c tin ch gip bn c th n gin trong vic chy, debug ng dng, la chn iOS Simulator, ng m cc vng khc - Editor area: vng bn thit k giao din, vit v chnh sa code ca chng trnh. - Utility area: vng ny cho php bn ty chnh cc tham s, gi tr ca cc i tng trn giao din, cng nh cho php bn ko th v s dng cc i tng
13
c sn ca Xcode nh Button, Label, Slider hay cc on code mu ( If, Switch). - Navigator area: cung cp cho bn mt cch nhn trc quan, tin li cho vic qun l ng dng, xem thng bo li, tm kim mt on code trong chng trnh hay kim tra mc hot ng ca RAM, CPU khi chy ng dng
Hnh 2.2 Giao din Xcode Xcode cng cung cp cho bn mt ch g li thng minh h tr bn trong vic pht hin li, cnh bo li v gi thay th khc phc
14
Hnh 2.3 Ch g li Hn th na, km theo Xcode l mt b ti liu hng dn tng bc, chi tit v tin li nhm h tr ngi dng trong vic lp trnh. Trong qu trnh vit ng dng, nu bn mun tm hiu thm mt i tng, bn c th s dng ti b ti liu ny c c hng dn, v d minh ha d hiu.
Bn c th xem thm ti liu v Xcode do Apple cung cp ti: https://developer.apple.com/library/ios/documentation/ToolsLanguages/Conceptual/Xcod e_Overview/About_Xcode/about.html 2.1.2 Thao Tc To ng Dng Mi Khi khi ng Xcode ln, giao din hin ra cho php bn to mt project mi, hoc m li cc project gn y.
Hnh 2.5 Giao din Xcode khi m ln Ti giao din Xcode, bn c th to mi mt project bng cch chn Create new project. Ngoi ra bn c th to project mi bng cch chn File > New > Project.
16
Hnh 2.6 To mi Project bng Menu Sau khi chn New Project, Xcode s yu cu bn la chn mt hnh thc cho Project ny (ng dng cho iPhone hay Mac OS, Single View hay Empty View). Cch n gin nht l bn chn Single View.
17
Tip theo bn in thm mt vi thuc tnh ca Project nh Product Name, Organization Name, Company Identifer. Sau bn tin hnh la chn Devices cho Project (iPhone, iPad hay Universal vit ng dng cho c hai).
Hnh 2.8 in thng tin cho project Tip theo bn chn ni lu tr Project trn my tnh lu Project v chn Create.
18
2.1.3 Tm Hiu Giao Din Xcode V Mt S Tnh Nng 2.1.3.1 Navigator Area Navigator area cho php bn qun l ng dng hiu qu nh qun l cc tp tin, th mc, qun l cc thng bo li v cnh bo, qun l vic debugC th chia Navigator area thnh hai phn chnh l Navigator selector bar v Content area.
Hnh 2.11 Giao din Navigator Trong Navigator selector bar gm mt s button chnh sau: - Project Navigator ( ): dng qun l cc tp tin ca ng dng nh thm,
20
- Find Navigator (
trong ng dng, tm kim ni dung m rng. - Issue Navigator ( - Debug Navigator( 2.1.3.2 Editor Area Editor area cho php bn thit k giao din, vit v sa code cho ng dng. Khi bn chn tp tin storyboard bn Content area th Editor area s hin th giao din Interface Builder cho bn thit k giao din. Tng t vi tp tin .m v .h th Editor area s hin th ni dung code ca tp tin. ): qun l cc thng bo li, cnh bo ca ng dng. ): theo di qu trnh debug ng dng.
21
Hnh 2.13 Giao din code Editor area cn cho php bn qun l cc i tng trong giao din mt cch chi tit hn. Trong phn Interface Builder, bn chn button Show Document Outline ( ) bn gc tri mn hnh, bn s thy c mt vng qun l phn cp cc i tng.
22
Hnh 2.14 Giao din qun l chi tit 2.1.3.3 Toolbar Area Toolbar cho php thc hin mt s thao tc mt cch nhanh chng thng qua cc Button m khng cn phi dng ti Menu. Toolbar gm mt s thnh phn sau: - Run button ( - Stop button ( - Scheme menu ( thch hp chy ng dng. - Activity viewer: thng bo trng thi ca ng dng, cng nh hin cc trng thi li, cnh bo ca chng trnh (nu c). ): dng chy th ng dng. ): dng dng vic chy th ng dng. ): dng la chn iOS Simulator
23
- Editor selector (
(cho php chia i Editor area ra lm hai hay ch l mt vng duy nht). - View selector ( area, Debug area. ): dng n/hin cc vng Navigator area, Utility
Hnh 2.16 Toolbar area 2.1.3.4 Utility Area Utility area c s dng thay i cc thuc tnh ca i tng bn Interface Builder, ngoi ra cn c s dng la chn v ko th cc i tng, on code mu vo Interface Buider v Editor. Utility area c chia lm 2 vng chnh l Inspector v Library. Inspector pane l vng cho php bn c s thay i thuc tnh ca i tng. Trn u ca Inspector pane l Inspector selector bar bao gm cc button h tr bn trong vic iu chnh thuc tnh. Trn u ca Libarary pane l Libaray selector bar bao gm cc button bn c th chn la ph hp trong vic s dng cc on code mu, cc i tng.
24
Hnh 2.17 Utility area Trong Inspector selector bar, c hai button bn cn lu l Attribute ( Quick Help ( ca i tng. Trong Library selector bar, c mt s button quan trng l Code snippets ( Objects ( ), ) v
hm trong ti liu km theo ca Xcode. Attribute cho php bn thay i cc thuc tnh
chn s dng trong qu trnh vit ng dng. Objects hin th cc i tng ca Xcode cho bn s dng thit k giao din ng dng.
25
2.1.4 Thit K Giao Din Giao din ng dng trong Xcode c thit k thng qua Interface Builder, cc i tng ca Interface Builder c cung cp trong Utility area. tin hnh thit k giao din, bn ko th i tng trong Utility area vo Interface Builder.
Hnh 2.18 Ko th cc i tng vo giao din Ti y bn c th iu chnh, sp xp v tr ca cc i tng theo tng thit k ca bn. Trong Xcode, tp tin bn dng thit k giao din l tp tin .storyboard. Khi ko th cc i tng vo Interface Builder, bn s d dng xc nh v tr t i tng sao cho giao din cn i, khng b hin tng lch khi Run ng dng. l nh vo tnh nng h tr canh chnh ca Xcode thng qua cc ng k t nt mu xanh.
26
Hnh 2.19 Canh chnh v tr theo ng k xanh Bn c th iu chnh cc thuc tnh ca cc i tng trong Interface Builder thng qua vng Inspector pane.
27
Hnh 2.20 Thay i thuc tnh ca i tng tm kim i tng mt cch nhanh chng, bn s dng cng c tm kim trong Library pane.
Hn na, nu bn mun tm hiu r hn v i tng , xem v d c th minh ha, bn c th s dng n b ti liu h tr ca Xcode.
Hnh 2.22 Xem ti liu h tr ca i tng 2.1.5 Vit Code Phn code ca ng dng thng c vit trong hai tp tin l .h v .m. Tp tin .h thng c s dng kt ni v khai bo cc i tng ca Interface Builder trc khi mun s dng cc i tng ny lp trnh. Ngoi ra tp tin .h cn dng khai bo cc hm s kin trc khi s dng trong tp tin .m. Tp tin .m dng trin khai cc hm s kin m bn khai bo bn tp tin .h.
29
Hnh 2.23 Hai tp tin s dng vit code cho ng dng kt ni i tng trong Interface Builder vo tp tin .h (nh x), bn nhn kt hp Ctrl + nhp chut vo i tng v ko th vo tp tin .h.
Khi hp thoi hin ra, bn la chn loi kt ni cho i tng l Action hoc Outlet. Hiu mt cch n gin, i tng no m bn s dng hin th thng tin ra bn ngoi th thuc loi Outlet. i tng no m bn mun vit code khi tng tc vi i tng s cho ra kt qu m bn mun ( v d bn mun nhn vo Button s hin Hello World ) th bn s chn loi l Action. Mt i tng c th va l Action, va l Outlet ty vo ngi vit ng dng quy nh.
Hnh 2.25 La chn kiu nh x Khi bn vit code, Xcode h tr bn trong vic pht hin li v thng bo cho bn bng hnh trn mu cha du chm than ti v tr pht hin li. Ngoi ra Xcode cng c ch cnh bo bng tam gic mu vng cho on code m Xcode cho rng cn ci thin bn kp thi kim tra li v chnh sa cho hiu qu ( nu cn ). Xcode cn h tr bn mt ch gi sa li trong qu trnh vit code. V d bn vit code nhng qun du ; , Xcode s gi cho bn c du ; hon tt on code hon chnh.
31
Hnh 2.26 Gi khc phc li Xcode ch h tr khc phc mt s li c bn v c php, cc li lin quan khc trong qu trnh vit code cc bn phi t gii quyt Trong Library pane, Xcode h tr sn cho bn mt s on code mu trong th vin, nu bn cn xi on code no, bn ch cn ko th on code t Library pane sang Editor area.
Nu bn c mt on code, bn mun lu n li ln sau s dng th bn ch cn chn on code v ko th vo Library pane, t tn cho on code v lu li. Nh vy ln sau bn mun s dng li, ch vic ko th t Library sang l c. thun tin cho vic vit code nhanh chng, bn c th bt ch chia i vng Editor area lm hai, lc ny bn c th xem cng lc c tp tin .h ln tp tin .m. Mun thc hin iu , trong Toolbar, bn nhp chut vo nt Assistant Editor Button ( ).
Hnh 2.28 Chia i mn hnh Editor tin lm vic Bn c th ty chnh li font v mu ch to nn mt s thay i, to thm cm hng mi. Bn chn Xcode > chn Preferences > chn Fonts & Colors, sau bn ty chn mt nh dng mnh thch.
33
Hnh 2.29 Ty chnh Font & Color cho giao din lp trnh code ca Xcode Trong qu trnh vit chng trnh, bn cng c th s dng nt Quick Help trong Utility area m ti liu tham kho v tra cu cc hm cng nh xem v d minh ha cho cc hm. 2.1.6 Thc Thi V Kim Tra Li Ca ng Dng 2.1.6.1 Thc Thi ng Dng Khi bn mun chy th v a ng dng ln iOS Simulator, bn s dng cc button chuyn dng trn Toolbar. chy ng dng, trc tin bn phi chn la thit b m bn mun chy ng dng ln . Bn c th chn chy ln thit b tht hoc trn iOS Simulator. Trong iOS Simulator, ty theo ng dng ca bn vit cho thit b no m la chn thit b , v d iPad, iPhone, iPhone Rentina
34
Hnh 2.30 La chn thit b iOS Simulator Sau khi chn la xong phn thit b, bn nhn Run chy chng trnh. Nu mun dng chng trnh, bn nhn Stop.
2.1.6.2 Kim Tra Li Ca ng Dng Vng Debug area h tr bn debug ng dng kim tra tng bc, ngoi ra cn c vng Debug Navigator cho php bn theo di cc tin trnh, cng nh vic s dng RAM, CPU.
Hnh 2.32 Vng Debug Navigator Trong Debug area c cc nt h tr nh bt tt cc Breakpoint, nhm nt h tr thc thi ng dng tng bc h tr bn debug mt cch chnh xc hn.
Hnh 2.33 Vng Debug area nh du breakpoint, bn chn v tr cn nh du, v nhp chut vo Breakpoint gutter tng ng vi v tr .
36
Hnh 2.34 nh du Breakpoint Ngoi ra nu bn mun thu gn 1 on code no , bn c th s dng thanh ng h tr bn cnh thanh ng t Breakpoint.
37
2.2 TM HIU IOS SIMULATOR 2.2.1 Gii Thiu iOS Simulator iOS Simulator l mt phn trong b cng c km theo ca phn mm Xcode. iOS Simulator cha iOS SDK cho php bn chy trn Mac OS gi lp mi trng iPhone, iPad nhm phc v cho vic kim th ng dng c vit ra trc khi kim th ng dng trn thit b tht. iOS Simualtor cho php bn ci t nhiu thit b iOS khc nhau nh iPhone, iPhone Rentina, iPad, iPad Rentina.. vi nhiu phin bn iOS khc nhau nh 6.0, 6.1, 7.0. Do bn c th d dng xy dng ng dng ca mnh dnh cho phin bn iOS mi hoc dng cho c phin bn iOS c. Vi iOS Simulator, bn c th kim th ng dng ca bn v thit k giao din, v tnh nng ca ng dng, t c th khc phc cc li pht sinh, ti u ha ng dng trc khi bn em ng dng ln thit b tht. Bn c th c thm ti liu iOS Simulator User Guide trn iOS Developer Library tm hiu thm, cng nh c thm kinh nghim s dng iOS Simulator. Xem ti : https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/iOS_Simulator_ Guide/Introduction/Introduction.html 2.2.2 Tm Hiu iOS Simulator ng dng iOS Simulator c th chy chung vi phn mm Xcode hoc chy c lp u c. Bn c th tng tc vi iOS Simulator thng qua bn phm, chut nhp d liu cng nh iu khin cc s kin ca ngi dng. Phn ny s gip bn tm hiu mt s im c bn ca iOS Simulator h tr bn tt hn trong qu trnh vit ng dng cho iOS.
38
2.2.2.1 Thao Tc C Bn Vi IOS Simulator Thao tc m v thot ios simulator m iOS Simulator bn c hai cch. Mt l bn chy ng dng trong Xcode khi ng iOS Simulator. Vi cch ny bn ch cn chn iOS Simulator ph hp ri chn Run.
Hnh 2.36 Chn Run m iOS Simulator Cch th hai l bn chn menu Xcode > chn Open Develop Tool > iOS Simulator. Khi y iOS Simulator s c khi ng.
39
Hnh 2.37 M iOS Simulator trong Menu Mc d l mt phn trong b cng c ca Xcode, nhng iOS Simulator vn c th tip tc hot ng d Xcode c b ng chng trnh. Do nu bn mun thot hn iOS Simulator, bn chn menu iOS Simulator > chn Quit iOS Simulator.
Xoay mn hnh iOS Simulator Trong qu trnh chy ng dng trn iOS Simulator kim th, i lc bn cn s dng ti chc nng xoay mn hnh c th kim tra tnh tng thch ca ng dng vi tng kiu mn hnh ( ngang, ng) hoc ph hp vi ng dng ca bn ( chng hn vit ng dng s dng mn hnh ngang). Nu l thit b tht, tht d dng bn c th xoay mn hnh cho ph hp. Tuy nhin vi iOS Simulator, bn cn phi s dng n chc nng xoay mn hnh c h tr sn c th xoay mn hnh theo mun. Bn c th vo menu Hardware > chn Rotate Left nu bn mun xoay qua tri ; chn Rotate Right nu bn mun xoay qua phi ; chn Shake Gesture nu bn mun rung nh.
Hnh 2.39 Trong menu chn xoay mn hnh iOS Simulator n/hin keyboard Trong qu trnh kim th ng dng, nhiu trng hp bn cn s dng n bn phm ca iOS, hoc sau khi nhp liu xong trong TextField nhng ng dng ca bn cha c chc nng n bn phm i, lc bn cn s dng n tnh nng Keyboard ca iOS Simulator n/hin bn phm. Bn c th vo menu Hardware > chn Simulate Hardware Keyboard.
41
Hnh 2.40 n/Hin keyboard trong iOS Simulator Ci t v g b ng dng trn iOS Simulator ng dng trong iOS Simulator c ci t thng qua Xcode. Khi bn chy ng dng bng Xcode th Xcode s ci t ng dng vo iOS Simulator. Cch thc g b ng dng cng ging nh trn thit b iOS tht. Bn ch cn nhp v gi chut ( hoc trackpad ) trn biu tng ca ng dng cho n khi xut hin biu tng du x, bn ch cn nhp vo du x g b ng dng. Sau khi hon tt ch cn n Home tr li ban u.
42
Hnh 2.41 G ng dng trong iOS Simulator B sung thm cc phin bn ios v cc thit b ios iOS Simulator cho php bn c th chy ng dng trn nhiu loi thit b nh iPhone, iPhone Rentina, iPad, iPad Rentina. ng thi, iOS Simulator cng cho php bn s dng nhiu phin bn khc nhau ca iOS nh iOS 6.0, iOS 6.1, iOS 7.0. Mc nh sau khi ci Xcode 5, iOS Simulator km theo c ci t h tr cc thit b iPhone Rentina, iPad Rentina v iOS 7.0. Nu bn mun iOS Simulator chy cc thit b iPhone, iPad thng thng v cc phin bn iOS thp hn nh iOS 6.0, iOS 6.1 th bn cn phi ti v ci t thm. Bn vo Xcode > chn Preferences > chn mc Download. Ti y bn la chn phin bn iOS cn ci t thm v ti v.
43
Hnh 2.42 Ti thm cc iOS Simulator phin bn c hoc ti liu Chp nh mn hnh iOS Simulator Nu bn mun chp nh mn hnh ca iOS Simulator, bn c th lu li nh chp mn hnh ca iOS Simulator ln mn hnh ca Mac OS. lm vic , bn chn File > chn Save Screen Shot, khi nh chp mn hnh s c lu trn mn hnh Mac OS.
Copy - Paste trong iOS Simulator Trong iOS Simulator cng h tr bn Copy v Paste mt chui. Copy mt chui, bn nhp chut vo chui hin th ra nt Select v Select All .Chn Select nu bn mun la chn mt t no , hoc Select All nu mun chn tt c.
Hnh 2.44 Chn Select hoc Select All Di chuyn im u v im cui nh du li chui cn chn > chn Copy
45
Hnh 2.45 La chn chui cn copy v chn Copy Paste mt chui vo iOS Simulator, trc tin bn chn Edit > Paste chuyn chui c copy t Mac vo iOS Simulator.
Sau chn v tr mun Paste chui trong iOS Simulator > Double-click vo v tr hin ra nt Paste > chn Paste.
Hnh 2.47 Chn Paste 2.2.2.2 Mt S Hn Ch Ca iOS Simulator Mc d iOS Simulator rt hu ch cho bn kim th ng dng trc khi a ln thit b tht, tuy nhin bn thn iOS Simulator vn cn mt s hn ch nht nh. i vi phn cng, iOS Simulator vn cn khim khuyt mt s im nh khng c camera, khng c microphone Ngoi ra cn mt s framework khng c h tr nh Media player, Messenger UI Nu nh cc phin bn trc ca Xcode, iOS Simulator cn h tr c vi cc phin bn ca iOS thp hn nh iOS th trong phin bn ny, iOS Simulator ch h tr t phin bn iOS 6.0 tr ln.
47
Mc d Xcode h tr nhiu ngn ng trong vic lp trnh ng dng trong iPhone, nhng ng vai tr ch yu nht vn l ngn ng Objective-C bi s thn thin, d s dng ca n. Chng ny s hng dn bn mt s nt c bn ca ngn ng lp trnh Objective-C vi hi vng bn s nm c s lc cch s dng, c php ca ngn ng ny thun tin hn trong vic xy dng ng dng. Ni dung chng s trnh by s lc mt s vn sau ca ngn ng Objective-C: Khai bo bin Kiu d liu Cc php ton Hm (Function) Cu trc iu kin Cu trc lp Mng Chui
3.1 GII THIU NGN NG OBJECTIVED-C Ngn ng Objective-C c to ra bi Brad Cox v Tom Love vo nm 1980 ti cng ty Stepstone. T nm 1988, cng ty NeXT Sofware nm gi bn quyn ca ngn ng Objective-C. H pht trin cc b th vin v c mi trng pht trin cho n c tn l NEXTSTEP. n cui thng 12 nm 1996, hng Apple mua li cng ty NeXT Software, mi trng NEXTSTEP/OPENSTEP tr thnh phn ct li ca h iu hnh OS X m Apple gii thiu sau ny. Phin bn chnh thc ca mi trng pht trin ny do Apple gii thiu ban u c tn l Cocoa. Bng vic h tr sn ngn ng Objective-C, ng thi tch hp mt s cng c pht trin khc nh Project Builder (y l tin thn ca Xcode) v Interface Builder, Apple to ra mt mi trng mnh m pht trin ng dng trn Mac OS X. n nm 2007, Apple tung ra bn nng cp cho ngn ng Objective-C v gi l Objective-C 2.0. Ngn ng lp trnh Objective-C da trn nn tng ngn ng C nhng b sung thm h tr lp trnh hng i tng. Objective-C l ngn ng lp trnh s dng vit ng dng cho Apples iOS v h iu hnh Mac OS. 3.2 KHAI BO BIN - CCH S DNG 3.2.1 Bin Bin c s dng lu tr cc gi tr ca ng dng. Bin gm c: kiu d liu, tn bin v gi tr ca bin. C php: Kiu_d_liu tn_bin ; hoc Kiu_d_liu tn_bin = gi_tr_ca_bin; Trong =: lnh gn gi tr cho bin VD: int x ; hoc int x = 10;
49
3.2.2 Quy Tc t Tn Quy tc t tn bin: - Ngn ng Objective-C c phn bit hoa thng. - Tn bin khng c du ting vit. - Tn bin khng c khong trng. - Tn bin khng c bt u bng s. - Tn bin khng c c cc k t c bit (ngoi tr du gch di _) - Tn bin khng c t trng vi cc t kho ca ngn ng objective-C. VD: void, if, static, ... 3.3 KIU D LIU Kiu d liu s gip trnh bin dch xc nh c loi d liu (s nguyn, s thc, chui,) m chng ta mun lu tr l g t s cp pht lng b nh tng ng vi loi d liu m chng ta cn lu tr. Objective-C h tr cc kiu d liu c bn nh sau: Loi d liu K t Tn kiu char unsigned char S nguyn int unsigned int short unsigned short long unsigned long long long S nh 1 byte 1 byte 4 bytes 4 bytes 2 bytes 2 bytes 4 bytes 4 bytes 8 bytes Min gi tr -128 .. 127 0 .. 255 - 2147483648 .. 2147483647 0 .. 4294967295 -32768 .. 32767 0 .. 65535 -2147483648 .. 2147483647 0 .. 4294967295 -9,223,372,036,854,775,808 ..
50
9,223,372,036,854,775,807 unsigned long long S thc float double 8 bytes 4 bytes 8 bytes 0 .. 18,446,744,073,709,551,615 0 .. 3.4028235e+38 0 .. 1.7976931E+308
16 bytes 1 bytes
Bng 3.1 Kiu d liu trong Objectived-C 3.4 PHP TON Php ton Cng Tr Nhn Chia Ly phn d K hiu + * / % V d A+B AB A*B A/B M%N
Bng 3.2 Cc php ton trong Objectived-C Lu : php ly phn d ch c dng trn 2 ton hng kiu s nguyn (nu khng s sinh li c php) V d: 9 % 5 = 4 3.5 CH THCH CODE Ch thch mt dng code
51
//ghi ch ch trn 1 dng Ch thch mt on code /* Ghi ch trn 1 hay nhiu dng */ 3.6 XUT D LIU RA MN HNH Hm NSLog l hm c bit ca h thng, hm ny c thit k dng cho vic hin th cc thng bo li. C php: NSLog(Ni dung in [ , cc_biu_thc]); Ni dung in Cc k t cn in Cc k t c bit bt u bi du \ V d LacHong University \n \t \\ \; \ Cc m nh dng gi tr ca biu thc : xung dng; : k t Tab; : k t \ : k t ; : du
Bng 3.3 V d cc kiu xut d liu ra mn hnh VD: Dng hm NSLog hin th chui LacHong University
52
Hnh 3.2 Kt qu in ra mn hnh Ghi ch: @: bn trong cp nhy i l chui cn lu log kim tra.
53
3.7 FUNCTION 3.7.1 nh Ngha Function L tp hp cc dng code, gom thnh 1 khi. Khi code ny c t tn.+ Khi code ny ch c thc thi khi tn khi code c gi. 3.7.2 Phng Thc Khng C Tham S Truyn Vo Khai bo: - (kiu_hm) tn_hm { //cc cu lnh [return [biu_thc];] } Trong : - Du - i din cho loi phng thc m ta phi gi n thng qua i tng ca lp cha ng phng thc . - Kiu hm: l kiu ca <biu thc> trong lnh return. - Tn hm: do chng ta t ngh ra VD:
54
Hnh 3.6 Xut ra mn hnh HelloWorld Trong self l lp hin ti c cha phng thc helloWorld. 3.7.3 Phng Thc C 1 Tham S Truyn Vo Khai bo: - (kiu_hm) tn_hm : (kiu_d_liu)tn_tham_s { //cc cu lnh [return [biu_thc];] } VD:
Hnh 3.8 Gi hm HelloWorld 3.7.4 Phng Thc C Nhiu Tham S Truyn Vo Khai bo:
55
- (kiu_hm) tn_hm : (kiu_d_liu)tham_s_1 [m_t]: (kiu_d_liu)tham_s_2 { //cc cu lnh [return [biu_thc];] } Trong - du hai chm : c dng ngn cch gia cc tham_s. - [m_t]: c th c hoc khng, dng m t cho tn tham s. VD:
56
3.8 CU TRC IU KIN 3.8.1 Cu Lnh If C php if ( iu_kin ) { //Cng vic 1 } Lu : iu kin l mt cu hi m cu tr li l YES hoc NO, Cng vic 1 s c thc hin nu iu kin l YES. V d: - if (a > b) a c ln hn b khng? - if (a >= b) a c ln hn hoc bng b khng? - if (a < b) a c nh hn b khng? - if (a <= b) a c nh hn hoc bng b khng? - if (a == b) a c bng b khng? - if (a != b) a c khc b khng? 3.8.2 Cu Lnh If Else C php if ( iu_kin ) { //Cng vic 1 } else {
57
//Cng vic 2 } 3.8.3 Cu Lnh Switch - Case C php switch ( biu_thc) { case hng_1: [cng_vic_1] case hng_2: [cng_vic_2] ... case hng_n: [cng_vic_n] default: [cng_vic_n+1] } Trong - Biu thc v hng kiu s nguyn - Lnh break thot khi switch VD:
58
Hnh 3.11 Cu trc Switch 3.9 Cu Trc Lp 3.9.1 Vng Lp For C php for (biu_thc1; biu_thc2; biu_thc3) { //Cng vic } VD:
while (iu_kin_lp) { //Cng vic } Trong : - Khi <iu_kin_lp> cn ng th cn thc hin <cng_vic>. Vng lp kt thc khi <iu_kin_lp> sai. VD:
Hnh 3.13 Vng lp While 3.9.3 Vng Lp Do-While C php: do { //Cng vic lp } while(iu_kin_lp) Trong : - Thc hin cng vic t nht 1 ln, v lp li cng vic khi <iu_kin_lp> l ng. VD:
60
Hnh 3.14 Vng lp Do - While 3.10 MNG 3.10.1 nh Ngha Mng l 1 tp hp nhiu bin nh c cng kiu, gi l kiu phn t ca mng, c cp pht nhng v tr lin tc trong b nh. Mi phn t (bin nh) trong mng c xc nh da trn tn mng v cc ch s xc nh v tr ca phn t trong mng. Ch s phn t ca mng l cc s nguyn khng m. 3.10.2 Mng Nsarray S dng i tng NSArray khi to mng. C php: NSArray *tn_mng; VD: NSArray *mangTen; khi to gi tr cho cc phn t trong mng ta s dng hm <initWithObjects> VD:
61
Hnh 3.15 S dng NSArray Trong - hm <count>: m s phn t trong mng. - alloc: cp pht vng nh cho mng mangTen. - %@: M kiu d liu i vi kiu chui NSString trong Objective-C. - objectAtIndex: ly ra phn t v tr index. Kt qu
Hnh 3.16 Kt qu s dng NSArray 3.11 CHUI I TNG NSSTRING 3.11.1 Khi To Chui i vi chui trong Objective-C phi bt u bng @
62
Hnh 3.19 m s lng k t 3.11.2 i Tng NSString To i tng c kiu l NSString c th s dng cc thao tc lien quan n chui do Class NSString cung cp (ghp chui, ct chui)
Hnh 3.20 i tng NSString 3.11.3 Tm Kim Bn Trong Chui Dng hm rangeOfString tm chui str1 c xut hin trong chui str2 khng.
Kt qu
Hnh 3.22 Kt qu tm kim 3.11.4 Tm Chui V Thay N Thnh Chui Khc Dng hm replaceCharactersInRange thay i chui thnh chui khc.
Hnh 3.24 Kt qu thay i k t 3.11.5 Xo Ni Dung Bn Trong Chui Dng hm deleteCharactersInRange xa mt ni dung bn trong chui.
64
Hnh 3.26 Kt qu sau khi xa ni dung 3.11.6 Ct Chui Ct chui c gii hn s lng k t, ly t k t th n.
Hnh 3.29 Ly cc k t cn li t v tr n Kt qu
Hnh 3.30 Kt qu ly cc k t cn li t v tr n
65
Hnh 3.32 Kt qu tch chui 3.11.7 Chn K T Vo Trong Chui Dng hm insertString chn k t hoc mt chui vo chui.
Hnh 3.34 Kt qu chn k t vo chui 3.11.8 Chn K T Vo Cui Chui Dng hm appendString chn k t vo cui chui.
66
Hnh 3.36 Kt qu chn k t vo cui chui 3.11.8 So Snh Chui Dng hm isEqualToString so snh hai chui.
Hnh 3.38 Kt qu so snh hai chui 3.11.9 So Snh Chui Vi K T u V Cui Chui Dng hm hasPrefix v hasSuffix so snh vi k t u chui, k t cui chui.
67
Hnh 3.40 Kt qu so snh vi k t u chui, k t cui chui 3.11.10 Chuyn i Hnh Dng Ca Ch Vit hoa ch u.
68
69
70
71
CHNG IV MT S THAO TC C BN Trc khi bt u lp trnh ng dng trn iPhone, ngoi vic bn tm hiu v Xcode v iOS Simulator, bn cn phi tm hiu thm mt s thao tc c bn trong lp trnh iOS. Hiu bit v cc thao tc c bn ny s b tr cho bn trong qu trnh tm hiu, cng nh l bi hc v lng trc khi i su vo tm hiu cc i tng c bn trong Xcode chng sau. Ni dung chng ny gm mt s thao tc c bn nh: Thay i icon ca ng dng Thay i mn hnh khi ng dng va c m ln Thay i tn ng dng khi tn c qu di Ty chnh background Thm mi mt framework n thanh trng thi status bar
4.1 APP ICON LOADING SCREEN Phn ny s hng dn bn cch hin th cng nh to icon, background image, loading screen cho ng dng ca bn. App icon, background image, loading screen cho ng dng ca bn cn da theo kch thc quy nh ca Apple v nn nh dng PNG. Bn c th tham kho thm kch thc chun y
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconM atrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1.
4.1.1 App Icon App icon l biu tng ca ng dng s hin th ra mn hnh iPhone sau khi ng dng c ci t, ng thi icon ca ng dng cng hin th ln App Store khi bn em ng dng ca mnh ln App Store. C hai loi icon l icon dnh cho ng dng trn iPhone v icon dnh cho ng dng trn App Store. App icon cho iPhone Rentina l 120x120, App icon cho App Store l 1024x1024.
Hnh 4.1 Icon Sau khi chun b c hnh nh vi kch thc ph hp, trong phn thng tin ca Project, bn ko xung phn App icon v ko cc icon chun b sn vo ng v tr ca icon.
73
Hnh 4.2 Ko th icon vo v tr Bn tin hnh chy th ng dng trn iOS Simulator s thy icon ca ng dng.
74
4.1.2 Loading Screen Loading Screen l hnh nh m khi chy ng dng ln bn s thy n, ty theo tc ca ng dng m thi gian hin th Loading Screen nhanh hoc chm khc nhau. chun b cho Loading Screen bn cn chun b trc hnh nh dng PNG, kch thc 640x1136 (iPhone 5 tr ln), 640x960 (iPhone 4).
Hnh 4.4 Chun b Background Sau khi chun b xong hnh nh, trong phn Lauch Image, bn ko th hnh nh vo Xcode cho ng v tr.
4.2 THAY I APP NAME App Name l tn ca ng dng hin th bn di App icon trn mn hnh iPhone. Nhiu trng hp v tn ng dng qu di nn khng th hin th ht trn mn hnh iPhone, do bn cn phi i tn ng dng li cho ph hp, ngn gn c th hin c tn ng dng bn di icon, nh vy ng dng s c tnh thm m hn. khc phc trng hp ny, bn cn phi thay i li App Name. Bn truy cp tp tin .plist v sa i Bundle Display Name thnh tn mi ca ng dng.
76
Hnh 4.7 Sa i Bundle display name Sau khi hon tt, bn chy ng dng trn iOS Simulator xem kt qu.
77
4.3 N STATUS BAR Vic n status bar cho php bn chy ng dng ca mnh ton mn hnh m khng phi thu nh mt phn giao din dnh ch cho status bar. Trc tin bn chn tp tin .plist trong project, sau bn thm mt dng mi.
Hnh 4.9 Thm dng mi Trong danh sch la chn ca dng mi thm vo, bn la chn Status bar is initially hidden v tr v gi tr l yes.
Hnh 4.11 Thanh trng thi Status bar mt 4.4 BACKGROUND 4.4.1 Background Image Hng dn ny s hng dn bn to v s dng mt hnh nh lm hnh nn cho ng dng ca bn. Trc tin bn cn phi chun b mt tm nh lm hnh nn. Kch thc ca tm nh ny ging nh hnh nh trong Loading Screen: nh dng PNG, kch thc 640x1136 (iPhone 5 tr ln), 640x960 (iPhone 4).
79
Hnh 4.12 Background Image Sau khi chun b xong hnh nh lm background cho ng dng, bn chp hnh nh vo trong project.
80
Tip theo bn t Utility area, bn ko th i tng UIImage View vo Interface Builder, iu chnh kch thc UIImage View cho va vi mn hnh.
Hnh 4.14 Ko th UIImage View vo Project Trong Inspector selector pane > Attributes inspector, bn tm n mc Image View > chn Image > la chn hnh nh bn mun lm background.
81
82
4.4.2 Background Color Ngoi vic s dng hnh nh lm background cho ng dng, nu bn yu thch s n gin, bn c th to background bng cch dng mt mu m bn a thch. Trong Inspector selector pane, bn chn Attributes inspector, tm n phn Background.
Hnh 4.17 Attributes inspector Ti y bn cho hin ra bng mu chn la vi nhiu mu khc nhau, hy la chn cho mnh mt mu ph hp, nu mun nhiu mu hn c th chn Other.
83
Hnh 4.19 Background thay i 4.5 THM FRAMEWORK Mc d Xcode h tr nhiu Framework h tr cho cc nh pht trin ng dng, tuy nhin ch mt s framework c bn c thm vo khi to project, cc framework cn li th khi vit ng dng, bn phi t thm vo c th s dng framework . tin hnh thm mt framework, trong giao din General ca Project, bn ko xung ti mc Link Frameworks and Libraries.
Bn nhp chut vo biu tng du cng m ra bng danh mc cc framework m Xcode h tr.
Hnh 4.21 Chn Framework Sau bn la chn framework m bn mun thm vo project ri nhn Add.
CHNG V MT S I TNG C BN Chng ny trnh by mt s i tng c bn thng c s dng vit ng dng cho iOS. Qua chng ny, bn c th nm c chc nng cng nh cch s dng mt s i tng c bn, t c th vn dng vo vit ng dng. Do kh nng ca ngi vit cn gii hn nn s i tng c gii thiu trong chng ny vn cn hn ch. Bn c th tm hiu thm nhiu i tng khc, tm hiu su hn tng i tng bng cch truy cp vo hng dn ca Apple cho ngi lp trnh a ch sau: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/UIKit UICatalog/index.html
5.1 I TNG LABEL BUTTON TEXT FIELD 5.1.1 Gii Thiu 5.1.1.1 i Tng Label Label dng hin th mt ni dung l ch/cu/on vn c tnh c nh t thay i.
Hnh 5.1 Label Label cho php ngi dng thay i mt s thuc tnh hin th ni dung ra giao din cho ph hp nh ty chnh mu ch, font v kch thc, canh tri/gia/phi hay cho ni dung ca label xung dng.
5.1.1.2 i Tng Button Button c th c thit k hin th ch hoc hin th theo hnh nh, thng c s dng ngi dng tng tc vi ng dng nhm to ra mt s kin no ca ng dng. Chng hn bn nhp tn ca bn vo text field, bn mun khi ngi dng chm vo button s hin tn bn ra mn hnh.Lc ny button s c thit k nm bt s kin khi ngi dng chm vo, v thc hin chc nng hin th tn bn ra mn hnh.
Hnh 5.3 Button Vi button, bn c th la chn mt s nh dng button c sn, hoc ty chn mt dng button khc theo bn. Khng nhng th bn cn c th ty chnh font ch, mu ch, mu nn ca button hoc thay th button theo m hnh nh button c thit k trc.
88
Hnh 5.4 Thuc tnh ca Button 5.1.1.3 i Tng Text Field i tng Text field thng c s dng ngi dng nhp d liu u vo cho ng dng. Chng hn nh bn vit chng trnh tnh tng hai s, th bn s dng Text field ngi dng nhp vo hai s cn tnh tng, v bn s s dng gi tr nhp vo ca Text field tnh ton v hin th kt qu cho ngi dng.
Hnh 5.5 Text Field Text field cho php ty chnh canh l tri/gia/phi, ty chnh font ch v kch thc ch trong Text field. Hn na, bn c th ty chnh hnh dng ca Text field, cng nh nh dng ni dung gi cho ngi dng (placeholder).
89
Hnh 5.6 Thuc tnh ca Text Field 5.1.2 V D Trong phn v d ny s hng dn cc bn vit mt ng dng nh hin th tn ca bn ra mn hnh. ng dng s c mt label, mt button, mt text field. Bn s nhp tn bn vo text field, sau chm vo button, label s hin th ni dung m bn nhp vo text field trc . - To ng dng c tn l Label-Button-TextField. - Thit k giao din cho ng dng gm mt lable, mt button, mt text field. - nh x cc i tng vo tp tin .h. - Vit code cho s kin khi ngi dng chm vo button. Bc 1: To project mi.
90
93
Hnh 5.13 chy th ng dng 5.2 KT NI C S D LIU VI SQLITE 5.2.1 Gii Thiu SQLite l mt h qun tr c s d liu c th chy hon ton c lp m khng cn n server. SQLite thng c ngi lp trnh s dng lu tr c s d liu khi vit ng dng cho cc thit b ca Apple. Cc lnh truy vn trn SQLite s dng cc lnh truy vn ca SQL (v d SELECT, UPDATE, CREATE). Vic qun l SQLite rt n gin, bn ch cn qun l thng qua mt plugin ca FireFox l SQLite Manager.Bn c th tm hiu thm ti http://www.sqlite.org. 5.2.2 Ci t Sqlite Manager Cho Firefox ci t plugin qun l SQLite cho Firefox, bn vo phn Addon ca trnh duyt Firefox v tm plugin SQLite Manager ri Add to Firefox.
94
Hnh 5.14 Addon SQLite Sau khi ci t xong, trong phn Tool bn s thy nh hnh.
Hnh 5.15 SQLite Manager trong Tool 5.2.3 Cu Hnh ng Dng Tng Tc Vi Sqlite ng dng c th thao tc vi c s d liu ca SQLite, bn cn b sung thm th vin h tr vo project. Trong phn Build Phase, mc Link to Library, bn thm vo th vin libsqlite3.dylib vo project.
5.2.4 Cc Hm Trong Sqlite Trong SQLite c mt s hm c bn cho php bn tng tc d dng vi c s d liu. - sqlite3_open(): m mt kt ni n tp tin sqlite. Nu tp tin ny cha c, h thng s t ng to ra. - sqlite3_close(): ng kt ni n sqlite. - sqlite3_prepare_v2(): khi to cu lnh truy vn SQL thc thi. - sqlite3_step(): thc thi lnh truy vn c to bi hm sqlite3_prepare_v2(). - sqlite3_column_<type>(): tr v kt qu d liu t cu truy vn SQL, vi kiu d liu c khai bo trong <type> (thng l text, bytes, int, int16). - sqlite3_finallize(): xo cu lnh truy vn SQL c khi to bi hm sqlite3_prepare_v2() trong b nh. Bn c th tham kho thm mt s hm khc ti: www.sqlite.org/c3ref/funclist.html 5.2.4.1 Khi To i Tng Sqlite Trc khi tng tc vi c s d liu SQLite, bn cn phi to i tng dng ny bng cch khai bo mt bin c kiu sqlite3 trong tp tin .h.
Hnh 5.17 Khai bo sqlite3 5.2.4.2 Kt Ni Hoc To Database Dng hm sqlite3_open() m kt ni n c s d liu sqlite.
Filename: l ng dn n tp tin sqlite. Nu tn database c du ting vit th cn chun ho li theo dng UTF-8 trc khi truyn vo. S dng bin SQLITE_OK kim tra trng thi tr v ca vic m kt ni n database c thnh cng hay khng. 5.2.4.3 Khi To V Thc Thi Lnh Truy Vn Cu lnh truy vn c khi to v lu tr vo i tng sqlite_stmt() v truyn vo hm sqlite_prepare_v2() thc thi.
Hnh 5.20 Thc thi i tng sqlite_stmt trong sqlite3_prepare_v2 Cu lnh SQL c thc hin bi cc lnh sau:
Trong cu lnh sqlite3_step() s tr v cc dng nh sau: - Nu cu lnh sql dng INSERT, DELETE, UPDATE, CREATE th tr v kt qu c dng l SQLITE_OK bo tnh trng c thc thi c hay khng. - Nu cu lnh slq dng SELECT s tr v kt qu c dng l SQLITE_ROW, l tp hp cc hng d liu c ly t database. 5.2.4.4 Truy Xut D Liu Database Khi to cu lnh truy vn.
Hnh 5.23 Tch d liu ly c 5.2.4.5 ng Kt Ni Database Sau khi hon tt qu trnh tng tc c s d liu, bn nn ng li kt ni c s d liu c
99
100
101
104
Hnh 5.38 Add Bc 10: thm th vin sqlite3.h vo project, khai bo i tng sqlite3 v nsstring
105
Hnh 5.39 Kt qu nh x Bc 11: vit code trong hm View Didload ly ng dn ti tp tin sqlite.
Hnh 5.40 Vit code View Didload Bc 12: vit code cho s kin Click Khai bo i tng lu ng dn database.
106
Hnh 5.43 Khai bo i tng sqlite3_stmt Vit lnh truy xut d liu
108
Hnh 5.47 Kt qu 5.3 S DNG CAMERA IPHONE 5.3.1 Gii Thiu Phn ny s hng dn cc bn cch s dng th vin h tr ca iOS dng camera iPhone chp nh. Th vin iOS cung cp mt lp l UIImagePickController dng qun l vic tng tc vi camera hoc photo library. Tuy nhin UIImagePickController khng th s dng trc tip m cn ti mt i tng khc delegate (tha k) li n. Sau y chng ta s xy dng mt ng dng n gin dng camera chp nh. Giao din ca ng dng ny gm mt UIImageView hin th hnh nh, mt button tn l Chp nh. 5.3.2 V D To ng dng mi t tn l CameraApp.
109
110
111
Hnh 5.53 Tha k UIImagePickController Vit code cho button Chp nh.
Hnh 5.54 Vit code cho button Chp nh Vit code hai phng thc ca UIImagePickController.
112
Hnh 5.55 Vit code cho hai phng thc ca UIImagePickController Vit code cho ViewDidload.
Hnh 5.56 Vit code cho hm ViewDidload Chy ng dng ln thit b tht kim tra kt qu. 5.4 UIIMAGE 5.4.1 Gii Thiu UIImage dng hin th hnh nh, c th s dng cc hiu ng animation hin th hnh nh.
Hnh 5.58 UIImage khi ko ra thit k giao din 5.4.2 Cc nh Dng nh H Tr Trn Iphone Cc dng file nh c h tr tt trn iPhone: Tn nh dng Tagged Image File Format (TIFF) Join Photographic Experts Group (JPEG) Graphic Interchange Format (GIF) Portable Network Graphic (PNG) Windows Bitmap Format (DIB) Windows Icon Format Windows Cursor Xwindow bitmap 5.4.3 V D Hin th nh t mt file c sn trn my. Bc 1: Add UIImageView vo StoryBoard. Chn Main.storyboard Tn file m rng .tiff, .tif .jpg, .jpeg .gif .png .bmp, .bmpf .ico .cur .xbm
Hnh 5.61 Kt qu sau khi ko vo storyboard Bc 2: nh x UIImageView vo file NATViewController.h dng outlet vi tn imgHinhAnh.
115
Hnh 5.62 Kt qu sau khi nh x Bc 3: Add file hnh vo project ang lm. Click phi chut vo project chn Add Files to...
116
Hnh 5.64 Chn file cn thm vo Bc 4: Load file hnh vo UIImage. Cch 1: Chn hnh t hp thoi Image View.
Hnh 5.66 Kt qu sau khi chn Cch 2: Gi phng thc sau load file hnh vo UIImageView.
Hnh 5.67 Cch s dng code M file NATViewController.m, ti phng thc viewDidLoad.
117
Hnh 5.72 Kt qu Hin th nh t mt URL: S dng phng thc initWithData load ni dung t url.
Hnh 5.73 Code load ni dung t url M file NATViewController.m, ti phng thc viewDidLoad.
119
Hnh 5.76 Kt qu
120
5.5 UIALERT VIEW 5.5.1 Gii Thiu UIAlertView l i tng c s dng hin th ni dung thng bo cho ngi dng, hoc ngi dng nhp liu.
Hnh 5.78 UIAlertView cho php nhp liu 5.5.2 c im Khi to i tng UIAlertView initWithTitle: message: delegate: cancelButtonTitle: otherButtonTitles Cc thuc tnh ca UIAlertView Thuc tnh title message elegate alertViewStyle numberOfButtons cancelButtonIndex firstOtherButtonIndex Din gii Tiu ca Alert View. Ni dung thng bo i tng nhn gi tr t UIAlertView. Kiu ca 1 Alert View khi hin th trn ng dng Tr v s lng buttons c trn Alert View V tr index ca button Cancel trn UIAlertView Gi tr ca nt u tin trong UIAlertView, mc nh l 0.
121
Cc phng thc ca UIAlertView Phng thc addButtonWithTile buttonTitleAtIndex textFieldAtIndex show dismissWithClickedButtonIndex 5.5.3 V D Hin th AlerView dng thng bo. Din gii Gn tiu cho Alert View Ly tiu ca button ti v tr index Ly ni dung ca textField ti v tr index Gi 1 Alert View Hu 1 UIAlertView
Hnh 5.79 Hin th dng thng bo Bc 1: Ti phng thc viewDidLoad khi to i tng AlertView nh sau: thongBao = [[UIAlertView alloc] initWithTitle:@"Lac Hong University" message:@"Webcome to Lac Hong University" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; Bc 2: Hin th AlertView bng phng thc show Thm on code sau vo cui phng thc viewDidLoad: [thongBao show]; Bc 3: Cmd + R chy th, kt qu:
122
Hnh 5.81 Hin th dng Text Field Bc 1: Khai bo AlertView Ti viewDidLoad khai bo AlertView nh sau:
Hnh 5.82 Khai bo AlertView Bc 2: Thit lp thuc tnh alertViewStyle cho AlertView l kiu Text.
123
Hnh 5.83 Thit lp thuc tnh Bc 3: Thit lp thuc tnh cho Text .
Hnh 5.86 Hin th kt qu 5.6 UISLIDER 5.6.1 Gii Thiu UISlider l mt i tng cho php ngi dng thay i gi tr bng cch di chuyn thanh trt.
124
Hnh 5.87 UISLIDER 5.6.2 c im Ly gi tr t Slider: Cch 1: dng property value value property Cch 2: dng phng thc setValue setValue:animated: Thit lp gi tr nh nht v ln nht cho Slider: - Thit lp gi tr nh nht: minimumValue - Thit lp gi tr ln nht: maximumValue 5.6.3 V D Bc 1: Thit k giao din nh sau.
Hnh 5.90 Kt qu sau khi nh x Bc 3: Thit lp gi tr nh nht v ln nht cho Slider trong khong 5 50. M ViewController.m thm on code sau vo cui phng thc viewDidLoad.
126
Hnh 5.91 Thit lp gi tr Thit lp gi tr chn mc nh l 30 thm on code sau vo cui phng thc viewDidLoad.
Hnh 5.92 Thm code vo cui viewDidload Bc 4: Gn kt qu ca Slider vo lblGiaTriSlider khi ngi dng thay i thanh trt. Thm on code sau vo phng thc changeSlider.
Hnh 5.93 Thm code vo phng thc changeSlider Bc 5: Ly gi tr t Slider gn vo lblKetQua khi ngi dng click vo button btnLayGiaTri.
127
Hnh 5.95 Kt qu hin th 5.7 UIWEBVIEW 5.7.1 Gii Thiu UIWebView l i tng gip hin th ni dung ca mt url no .
Hnh 5.99 nh x i tng Bc 3: Ti mt url. M file ViewController.m thm on code sau vo cui phng thc viewDidLoad.
Hnh 5.101 Kt qu chy th Bc 4: Thc hin cc chc nng: back, next, refrest, stop.
130
Qua giao din ln lt nhn gi Ctrl cc i tng (back, next, refrest,top) v ko th vo UIWebView.
Hnh 5.102 To kt cc cho cc chc nng ca button. Thit lp thuc tnh cho UIWebView l Scales Page To Fit.
131
Hnh 5.104 Kt qu 5.8 ACTIVITY INDICATOR VIEW 5.8.1 Gii Thiu Activity Indicator View l mt i tng thng bo ch i cho ngi dng.
Hnh 5.105 Activity Indicator View 5.8.2 V D Bc1: Tip tc vi v d ca UIWebView, ko th i tng Activity Indicator View.
132
Hnh 5.106 Ko th Activity Indicator vo giao din Bc 2: Map i tng Activity Indicator View vi tn mySpinner.
133
Hnh 5.108 Thm Protocol UIWebViewDelegate Bc 4: M file ViewController.m thm 2 phng thc sau. - (void)webViewDidStartLoad:(UIWebView *)webView { //Spinner bt u quay [mySpinner startAnimating]; } Gii thch: phng thc ny s c gi khi i tng UIWebView bt u ti d liu t URL. - (void)webViewDidFinishLoad:(UIWebView *)webView { //Ngng spinner [mySpinner stopAnimating]; //Gn tiu vo "UIWebViewController" NSString* title = [webView stringByEvaluatingJavaScriptFromString: @"document.title"]; self.navigationItem.title = title; }; Gii thch: phng thc ny s c gi khi i tng UIWebView ti d liu t URL xong. Thm on code sau vo cui phng thc myWebView.delegate = self; cho php 2 phng thc trn i tng UIWebView qun l v t gi.
134
Bc 5: Qua giao din thit lp thuc tnh Hides When Stopped cho i tng Activity Indicator View.
Hnh 5.110 Kt qu
135
5.9 ACTIONSHEET 5.9.1 Gii Thiu Action Sheet Cho php ngi dng xc nhn cc hnh ng trn ViewController.
Hnh 5.111 Action Sheet 5.9.2 c im Khi to Action Sheet: initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles Thit lp thuc tnh cho Action Sheet: Delegate : c gi tr l nil hoc mt i tng no . title: Tiu ca Action Sheets. visible: n hin Action Sheet. actionSheetStyle: kiu Action Sheet.
Cu hnh cho cc button trn Action Sheet: Thm button: addButtonWithTitle: Ly tng s button: numberOfButtons Ly tiu ca button: buttonTitleAtIndex: Ly v tr ca button cancel: cancelButtonIndex
136
- Ly v tr ca button u tin: firstOtherButtonIndex Hin th mt Action Sheet: - showInView: 5.9.3 V D Bc 1: Thit k giao din nh sau:
Hnh 5.112 Thit k giao din Bc 2: Thm protocol <UIActionSheetDelegate> v map (action) button vi tn touchBtn kt qu file ViewController.h #import <UIKit/UIKit.h> @interface NATViewController : UIViewController <UIActionSheetDelegate> {
} - (IBAction)touchBtn:(id)sender; @end
137
Hnh 5.113 Khi to Action Sheet Bc 4: Hin th Action Sheet bng cch thm on code bn di vo cui phng thc touchBtn.
Hnh 5.114 Hin th Action Sheet Bc 5: Thm phng thc clickButtonAtIndext in ra button m ngi dng chn.
Hnh 5.116 Kt qu chy th 5.10 MK MAP VIEW 5.10.1 Gii Thiu MK Map View l mt i tng cung cp giao din bn .
138
Hnh 5.117Map View 5.10.2 V D Bc 1: Thit k giao din nh sau: Ko i tng Map View vo View Controller
Ko Toolbar v cc Bar button vo View Controller check thuc tnh Show User Location cho i tng MKMapView.
Hnh 5.121 Chy th Bc 2: Map (action) cc i tng: GPS (touchGPS), Map (touchMap), Satellite (touchSatellite), Hybird (touchHybird) vo ViewController.h.
Hnh 5.122 nh x cc button Bc 3: Hin thc phng thc touchGPS M ViewController.m thm on code sau vo phng thc touchGPS:
141
Hnh 5.123 Thm code vo touchGPS Bc 4: Hin thc li phng thc touchMap M ViewController.m thm on code sau vo phng thc touchMap: myMapView.mapType = MKMapTypeStandard; Bc 5: Hin thc li phng thc touchSatellite M ViewController.m thm on code sau vo phng thc touchSatellite: myMapView.mapType = MKMapTypeSatellite; Bc 6: Hin thc li phng thc touchHybird M ViewController.m thm on code sau vo phng thc touchHybird: myMapView.mapType = MKMapTypeHybrid; Bc 7: Chy th, kt qu:
Hnh 5.124 Kt qu
142
5.11 TABLE VIEW CONTROLLER 5.11.1 Gii Thiu Table View Controller c s dng hin th d liu theo dng bng.
Hnh 5.125 Table View 5.11.2 V D Bc 1: Ko th mt Table View Controller sang giao din thit k.
143
Hnh 5.126 Ko th Table View vo giao din Bc 2: To mt lp tn Table View Controller gn vo Table View Controller va ko th. Nhn Ctr + N to 1 lp Chn Objective C class Class: TalbeViewController Subclass of: UITableViewController.
Hnh 5.128 Gn class vi Table View Bc 3: M TableViewController.m bn di @implementation... khai bo 1 mng mangSinhVien: @implementation TableViewController NSMutableArray *mangSinhVien; Bc 4: Khi to mng sinh vin trong phng thc viewDidLoad. mangSinhVien = [[NSMutableArray alloc] initWithObjects: @"Nguyen Anh Tiep", @"Cao Thanh Vang", @"Nguyen Xuan Thanh", @"Nguyen Xuan Thao", @"Nguyen Xuan Hoa", @"Nguyen Hoai Nam", @"Le Thi Bich Ha",
145
@"Pham Thi Anh Nguyet", @"Nguyen Tien Trung", nil]; Bc 5: Ti phng thc numberOfSectionsInTableView sa li nh sau: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } Gii thch: phng thc ny cho php chng ta thit lp s Section trong Table View Controller. Section c dng nh sau:
Hnh 5.129 Section Bc 6: Sa li phng thc numberOfRowsInSection nh sau: - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return mangSinhVien.count; }
146
Gii thch: phng thc ny cho php chng ta thit lp s dng trong 1 Section, y chnh l s phn t ca mng Bc 7: ti phng thc cellForRowAtIndexPath bn di // Configure the cell... thm on code sau hin th tn sinh vin ln Table View Controller: NSInteger row = indexPath.row; cell.textLabel.text = mangSinhVien[row]; Bc 8: Cmd + r chy th, kt qu:
Hnh 5.130 Kt qu 5.12 SEARCH BAR 5.12.1 Gii Thiu Search Bar c s dng tm kim trong Table View Controller.
147
Hnh 5.131 Search Bar 5.12.2 V D Bc 1: Tip tc vi v d ca Table View Controller, thm i tng Search Bar and Search Display Controller vo Table View Controller.
Hnh 5.133 nh x i tng Bc 3: B sung protocol <UISearchBarDelegate> s dng c cc phng thc ca i tng Search Bar. M TableViewController.h bn di @interface... thm vo nh sau: #import <UIKit/UIKit.h> @interface TableViewController : UITableViewController <UISearchBarDelegate> { IBOutlet UISearchBar *mySearchBar; } @end Bc 4: M TableViewController.m thm vo phng thc timKiemDuLieu tm kim d liu trong mng mangSinhVien. - (void)timKiemDuLieu { NSPredicate *resultsPredicate = [NSPredicate predicateWithFormat:@"SELF contains [search] %@", mySearchBar.text]; mangKetQua = [[mangSinhVien filteredArrayUsingPredicate:resultsPredicate] mutableCopy]; }
149
Gii thch: phng thc filteredArrayUsingPredicate c h tr sn trong mng v dng tm kim d liu trong mt mng no . Bc 5: Thm vo phng thc textDidChange thc hin tm kim mi khi ngi dng nhp t kho vo Search Bar. - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { [self timKiemDuLieu]; } Bc 6: Sa li phng thc numberOfRowsInSection nh sau: - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (tableView == self.tableView) { return mangSinhVien.count; } else { [self timKiemDuLieu]; return mangKetQua.count; } } Gii thch: mc nh khi ngi dng khng tm kim th s dng trong mt Section chnh l s phn t ca mng mangSinhVien, nhng khi ngi dng s dng Search Bar tm kim th s dng lc ny chnh l s phn t trong mng kt qu tm kim c mangKetQua. Bc 7: Sa li phng thc cellForRowAtIndexPath nh sau: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell";
150
// Configure the cell... NSInteger row = indexPath.row; if (tableView == self.tableView) { cell.textLabel.text = mangSinhVien[row]; } else { cell.textLabel.text = mangKetQua[row]; } return cell; } Gii thch: mc nh khi mng c s dng hin th ln Table View Controll l mng Sinh Vin mangSinhVien nhng khi ngi dng s dng Search Bar tm kim th mng hin th d liu ln Table View Controller lc ny chnh l mng kt qu tm kim mangKetQua. Bc 8: Cmd + r chy th, kt qu:
151
Hnh 5.134 Kt qu 5.13 TRUYN D LIU GIA CC VIEW 5.13.1 Gii Thiu truyn d liu qua li gia cc View Controller trong mt ng dng, NSUserDefaults l mt lp c cc phng thc h tr lm iu ny. 5.13.2 V D Bc 1: Thit k giao din cho nh sau v Map (Outlet) i tng textField vi tn txtHoTen.
152
Hnh 5.135 Thit k giao din Bc 2: Thm mt View Controller vo giao din thit k.
Hnh 5.136 Thm View Controller vo Bc 3: Thm mt lp c tn NATViewController2 nhn Ctrl + N to mt lp Objective-C class Subclass of: UIViewController.
153
Hnh 5.138 Gn class vo giao din Bc 5: Thit k giao din cho View Controller 2 nh sau v i tng Label vi tn lblKetQua.
154
Hnh 5.139 Thit k giao din Bc 6: To lin kt gia 2 View Controller bng cch nhn gi phm Ctrl sau ko th t button Gi trn View Controller th nht sao View Controller th 2 chn modal.
Bc 7: Lm tng t bc 6 i vi button Quay lai trn View Controller2. Bc 8: Thc hin truyn d liu t View Controller th nht. M ViewController.m thm phng thc prepareForSegue - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { [[NSUserDefaults standardUserDefaults] setObject:txtHoTen.text forKey:@"HoTen"]; } Gii thch: Phng thc prepareForSegue c gi t ng trc khi chuyn sang mt View Controller khc. Bc 9: Thc hin nhn d liu t View Controller th nht. M NATViewController2.m trong phng thc viewDidLoad b sung on code sau: lblKetQua.text= [[NSUserDefaults standardUserDefaults] objectForKey:@"HoTen"]; Bc 10: Chy th, kt qu:
Hnh 5.141 Kt qu
156
CHNG VI HNG DN XY DNG PHN MM Qua cc ni dung cc chng trc, chc hn bn nm c cch thc xy dng mt ng dng, cng nh hiu v s dng c mt s i tng trong Xcode vo thit k v xy dng ng dng trn iPhone. Tuy nhin b sung, cng c li kin thc cho bn, cng nh gip bn c th t lm c mt ng dng hon chnh t c bn n nng cao, nhm tc gi s gii thiu n bn qu trnh thit k v xy dng hai ng dng hon chnh da trn cc i tng trong Xcode c gii thiu h thng li kin thc m ti liu cung cp, cng nh cho bn lm quen vi vic xy dng ng dng hon chnh. Hai ng dng trong chng ny s c gii thiu v hng dn mt cch chi tit qu trnh thit k v xy dng bn c th thc hin theo mt cch d dng. Hi vng rng sau khi thc hin xong hai ng dng ny, bn c th t tm tng v xy dng nn ng dng ring cho mnh.
6.1 PHN MM KIM TRA M VIN 6.1.1 Gii Thiu Phn mm Kim Tra M VIN l phn mm gip ngi dng c th kim tra m VIN ca xe hi mt cch d dng. T ngi dng c th bit thm thng tin v xe hi theo m VIN nh hng xe, nm sn xut, ni sn xut, nhin liu 6.1.2 Chun B - ng dng s c vit trn phin bn XCode 4 (Xcode 4.6.3) hoc Xcode 5 (vi iu kin a v dng h tr xy dng ng dng chy cho cc phin bn iOS c, ni dung ny s c trnh by sau). - Mt ti khon Google hoc Facebook ng k s dng dch v OCR SDK API v b th vin OCR (xem folder source nh km). - Mt s hnh nh s dng cho phn mm (xem folder source nh km). - C s d liu m VIN (xem trong folder source). 6.1.3 Cu Trc Phn Mm Phn mm Kim tra m VIN c cu trc gm 3 phn: c s d liu v m VIN c lu tr bng SQLite, giao din nhp d liu v hin th d liu (s dng cc i tng trong Xcode) v x l nhn din m VIN trong hnh nh thng qua Cloud OCR SDK API ca hng ABBYY. C s d liu m VIN s dng c s d liu m VIN nm 2013 ca hng Ford. C s d liu ny s c lu tr thng qua h qun tr c s d liu SQLite. Vi vic s dng SQLite, c s d liu s d dng truy cp bng cc cu lnh truy vn ca SQL nh SELECT, CREATE, UPDATE Vic qun l SQLite d dng v n gin thng qua plugin SQLite Manager ca Firefox v c th chy hon ton c lp m khng cn n server. Giao din nhp d liu v hin th d liu s dng cc i tng ca Xcode nh Button, Label, Text Field, View Controller cng nh Camera ca iPhone nhn d liu do ngi dng nhp vo, ng thi hin th d liu c truy xut t SQLite.
158
X l nhn din m VIN trong hnh nh s dng OCR SDK API ca hng ABBYY. Hnh nh s c a ln server, server s x l nhn din v tr v mt on text nhn din c t hnh nh. Phn mm s x l on text tr v t server tch m VIN ra v a vo SQLite tra cu d liu. 6.1.4 C Ch Vn Hnh Phn mm hot ng theo hai c ch chnh. C ch th nht l ngi dng s nhp vo m VIN bng tay, chng trnh s khi to cc cu lnh truy vn SQL v gi n SQLite truy xut d liu v em kt qu hin th ra giao din. C ch th hai s cho php ngi dng s dng camera ca iPhone chp li m VIN v a hnh nh ln OCR Server. Server s x l v tr v mt on text kt qu sau khi nhn din k t trong hnh nh. Phn mm s phi x l on text tr v lc ra c m VIN. Nu hnh nh chnh xc, m VIN s c ly ra v to cu lnh truy vn gi n SQLite. SQLite s truy xut d liu v tr v kt qu. Kt qu s hin th ra giao din.
6.1.5 Tnh Nng Phn mm Kim tra m VIN cho php ngi dng c th kim tra m VIN ca xe, t c c mt s thng tin v xe nhng hng xe, loi xe, ni sn xut, nm sn xut Ngoi ra phn mm cng h tr ngi dng tm kim theo cc phng n nh nhp vo s VIN hoc s dng camera ca iPhone chp li m VIN ri tra cu.
160
162
Hnh 6.7 Giao din kt qu 6.1.6 Tin Hnh ng dng bao gm cc giao din c lp c lin kt li vi nhau thnh mt khi thng nht. Sau y l cc giao din ca phn mm.
163
Bc 1: To project mi.
164
Hnh 6.15 Single View Application t tn project l KiemTraMaVIN. Phn Organization Name v Company Identifier cc bn in theo mnh. Device chn l iPhone.
Chn v tr lu project.
Hnh 6.19 B sung Lauch image Ty chnh project c th chy c trn cc iOS version khc nhau (Vic ny lm trc hay sau khi hon thnh project u c, xem thm ni dung chng VIII). Bc 2: Thit k giao din chnh. t title cho Viewcontroller giao din l GiaoDienChinh.
Hnh 6.20 t Title cho Viewcontroller Ko th label vo giao din v t text l Phn Mm Kim Tra M VIN.
167
Hnh 6.23 nh x button Info Vit code cho button Info Dark
Hnh 6.24 Vit code cho button Bc 3: Ko th thm mt Viewcontroller t title l V Tr VIN.
169
Hnh 6.25 View Controller V Tr VIN To lin kt chuyn i view sao cho khi click vo button V Tr VIN trn View Controller - Giao Din Chnh s chuyn sang View Controller-V Tr VIN.
Hnh 6.26 To lin kt gi hai view Thit k giao din cho View Controller V Tr VIN
170
Hnh 6.27 Thit k giao din To kt ni chuyn v giao din chnh khi click vo button Quay Li
Hnh 6.28 To kt ni cho button Quay Li Bc 4: Ko th mt View Controller khc vo , t title l Nhp M VIN.
171
Hnh 6.29 Thm View Controller mi tn l Nhp M VIN Thit k giao din cho View Controller Nhp M VIN.
Trong [1] Ko mt label vo v nhp ni dung nh hnh. [2] Ko mt text field ngi dng nhp m VIN vo [3] Ko button vo sao cho khi click vo button Xem s tin hnh kim tra m VIN c nhp vo v a n View Controller Kt Qu. Nu click vo Camera s chuyn n view Camera, click vo Quay li s v giao din chnh. Thm mt class mi qun l Nhp M Vin
173
Kt qu sau khi to
Hnh 6.33 Kt qu Chn View Controller Nhp M VIN, bn khung Inspector pane, chn tab Identity Inspector.
175
Hnh 6.38 Kt qu sau khi thm th vin Thm th vin sqlite3.h vo tp tin .h v khai bo i tng contactDB dng sqlite3, i tng databasePath dng NSString lu gi ng dn n database.
177
Hnh 6.39 Thm th vin v khai bo contactDB,databasePath Vit code cho hm viewDidLoad ly ng dn n tp tin sqlite. Bn trong hm ViewDidload, bn vit cc on code sau:
Vit hm bn phm n i khi ngi dng nhn vo Return. Trc ht tha k li UITextFieldDelegate cho view Controller trong NhapMaVIN.h.
Hnh 6.42 K tha UITextFieldDelegate Khai bo thm @property cho Text field
Hnh 6.43 Khai bo property cho Textfield Vit code n bn phm trong NhapMaVIN.m.
Trong NhapMaVIN.h, ngoi phng thc Xem do button nh x, bn khai bo thm hai phng thc kim tra di m VIN v phng thc kim tra v tr th 9 ca m VIN.
Hnh 6.46 Khai bo thm hai phng thc Vit code cho hai phng thc mi khai bo
Hnh 6.49 Khai bo bin lu ng dn n tp tin sqlite t hm ViewDidLoad Khai bo bin kiu sqlite3_stmt cha d liu tr v t cu lnh truy vn.
Hnh 6.50 Khai bo bin kiu sqlite3_stmt lu kt qu truy vn Khai bo bin lu cc gi tr c trch xut t d liu tr v.
181
Hnh 6.52 Khai bo trong tp tin NhapMaVIN.m Vit code cho phng thc Xem ca button nh sau Gn gi tr cho bin dbpath lu tr ng dn sqlite chun ha UTF-8 v bin vin_upcase lu gi tr VIN sau khi chuyn sang dng vit Hoa.
Hnh 6.53 Khai bo bin Kim tra m VIN c NULL hay khng, nu c th thng bo m rng, nu khng th trin khai tip code trong hm else.
182
Hnh 6.54 Nu m VIN l NULL th xut thng bo Trong hm else (nu m VIN khng NULL s thc hin code trong hm else) gn gi tr cho vin_upcase l m VIN vit hoa ton b, sau vit tip cc on code tip theo.
Hnh 6.55 Vit hoa m VIN v gn cho vin_upcase To bin lu kt qu tr v t hm kim tra di VIN v gi hm kim tra xem di VIN c ph hp hay khng.
Hnh 6.56 Lu kt qu kim tra di To bin lu k t v tr th 9 ca m VIN, kim tra xem k t c hp l hay khng.
Bt u i su vo vit hm if xem kim tra di v k t v tr 9 c hp l hay khng Nu khng th xut thng bo, nu hp l tin hnh thc thi trong hm else.
Hnh 6.58 Vit code cho iu kin If Tin hnh vit code cho hm else x l nu m VIN tho mn yu cu To cu lnh truy vn cho m vin v tr 1-3, 8,10,11
184
Hnh 6.62 To cu lnh truy vn v tr 11 Khai bo bin cha gi tr thu c sau khi m ho cc lnh truy vn v dng h tr UTF-8.
Hnh 6.63 To bin lu gi tr m ha Vit code truy vn d liu vi cc lnh truy vn tng ng. Trc tin kim tra iu kin kt ni d liu, nu kt ni c th trin khai truy vn d liu trong hm if, ngc li bo khng kt ni c.
185
Hnh 6.64 Kim tra m kt ni vi sqlite Vit code truy vn d liu cho m vin 1-3
Hnh 6.65 Code truy vn v tr 1-3 Code truy vn d liu cho m vin 8
186
Hnh 6.67 Code truy vn cho v tr 10 Vit code truy vn cho m vin v tr 11
187
Hnh 6.68 Code truy vn cho v tr 11 Sau khi vit xong code truy vn d liu cho m VIN, tin hnh ng kt ni truy xut d liu s dng sqlite3_close. ng thi vit code cho trng hp else ca cu lnh if dng m kt ni vi sqlite.
Hnh 6.69 ng kt ni sqlite v vit lnh else Bc 5: Thm mt View Controller mi vo ng dng, t tn l KQVIN. Thit k theo giao din vi mt button l Quay Li, cn li l cc label hin th.
188
Hnh 6.70 Giao din KQVIN Thm mt class l KetQuaVIN dng ViewController.
190
Hnh 6.74 Create t lp mi thm vo lm lp qun l cho View Controller KQVIN. ng thi t Identity Storyboard ID l tn lp qun l.
nh x cc i tng vo KQVIN
Hnh 6.76 nh x i tng Khai bo bin lu thng tin t Nhp M VIN chuyn qua.
Hnh 6.78 Vit code hin th d liu ra mn hnh import class NhapMaVIN vo KQVIN
Hnh 6.79 Import class NhapMaVIN Tr li NhapMaVIN.m, import lp qun l ca KQVIN vo Nhp M VIN Controller
Hnh 6.80 Import class KQVIN Vit code chuyn d liu t NhapMaVIN sang KQVIN
193
Hnh 6.81 Vit code chuyn d liu t NhapMaVIN sang KQVIN To kt ni cho button Quay Li ca KQVIN v Nhp M VIN
Hnh 6.82 To kt ni cho button Quay Li ca KQVIN To kt ni cho button Quay Li ca Nhp M VIN v giao din chnh.
194
Hnh 6.83 To kt ni cho button Quay Li ca Nhp M VIN Bc 6: Thm mt view controller mi tn l Camera. Thit k nh giao din vi mt button truy cp camera, mt button a nh ln server x l OCR.
- [1] Button Quay Li dng tr li giao din chnh. - [2] Button Chp M dng truy cp vo camera ca iPhone. - [3] Button Tra M upload hnh nh chp c ln server. - [4] UIImageView hin th hnh nh. Vi hnh nh mc nh l sample.png (hnh nh c trong folder source). Kt ni button Camera trn Nhp M VIN, button Camera trn giao din chnh vi view controller Camera.
Hnh 6.85 Kt ni cc button Camera vi View Controller Camera Thm class mi vo project qun l ViewController Camera.
196
197
Hnh 6.90 nh x i tng Trong tp tin AppleDelegate.h khai bo i tng UIImage lu nh chp c t camera.
199
Trong tp tin AppleDelegate.m vit code sau cc View khc c th truy xut imageToProcess d dng.
Hnh 6.92 Vit code Trong AppleDelegate.m Vit thm vo hm didFinishLauching gn hnh nh mc nh cho imageToProcess.
Hnh 6.93 Vit code trong didFinishLauching Thm tp tin nh sample.jpg vo project.
Hnh 6.95 Chn tp tin sample.jpg v Add Trong tp tin camera.h, tha k li delegate ca UIImagePickerController.
Hnh 6.96 Tha k Delegate ca UIImagePickerController Trong tp tin camera.m, import th vin AppleDelegate.h v vit code sau.
Hnh 6.99 Vit thm hm viewDidLoad Vit code chp nh. Khai bo i tng UIImagePickerController l imagePicker, sourceType l UIImagePickerControllerSourceTypeCamera chn l s dng camera.
Hnh 6.100 Vit code chp nh Vit code ly nh chp c vo imageView, ng thi lu vo bin ca AppleDelegate.
202
Hnh 6.101 Vit code gn hnh nh t camera vo imageView v AppleDelegate Vit code cho s kin hu chp nh
Hnh 6.102 Vit code cho s kin hy chp nh Thm b th vin OCR vo project.
203
Hnh 6.104 Chn th vin OCR v Add Bc 7: Thm mt viewcontroller mi t tn l Nhn Din, thit k nh hnh.
Trong - [1] Label hin tn ca viewController Nhn Din. - [2] Label hin th trng thi x l ca viewController. - [3] Mt Activity Indicator hin trng thi ang x l. Thm mt class mi l NhanDien qun l viewcontroller mi.
205
Hnh 6.110 t class Nhan Dien lm class qun l nh x i tng vo tp tin NhanDien.h
Hnh 6.112 Import Client.h v tha k li ClientDelegate Trong tp tin NhanDien.m, import th vin AppDelegate.h
Hnh 6.115 Register OCR SDK Ti trang ng k, bn c th chn la ng nhp vi ti khon Google, Facebook hoc ng k theo email mi. Bn nn chn ti khon Google rt ngn thi gian.
Hnh 6.117 Add New Application in Application Name ri chn Create Application
Hnh 6.118 Create Application Mt khu s c gi v email, bn kim tra email ly mt khu.
Hnh 6.120 Khai bo tn application v mt khu Vit thm code sau y d dng s dng cc bin khai bo bn NhanDien.h
Hnh 6.121 Vit code cho cc bin khai bo trong NhanDien.h Vit hm viewDidUnload
Vit hm viewDidAppear
211
Hnh 6.127 didFailedWithError Trong NhanDien.h, khai bo contactDB dng sqlite3 v databasePath dng NSString s dng tra cu c s d liu.
Hnh 6.129 Import sqlite3.h Trong NhanDien.h, khai bo cc i tng lu d liu t sqlite.
Hnh 6.132 Import th vin Khai bo cc bin lu ng dn, bin dng sqlite3_stmt lu kt qu t sqlite, cc bin bn NhanDien.h truy xut d dng.
213
Hnh 6.134 Vit code hm viewDidload Vit code cho hm KiemTraDoDai v KiemTraDigit khai bo bn NhanDien.h
Hnh 6.135 Vit code cho hm khai bo Vit code cho hm ChuanHoa bc tch s VIN t d liu tr v. Do d liu t server s tr v mt chui cc k t m server nhn din c, do cn phi chun ha
214
cc k t c bit thnh khong trng, sau tin hnh bc tch m VIN t chui chun ha.
Hnh 6.136 Hm ChuanHoa Vit hm didFinishDownloadData x l d liu tr v ging nh code vit cho button Xem ca view Nhp M VIN. Trc tin, t chui tr v sau khi chy hm ChuanHoa, tin hnh b i k t xung dng cui chui.
215
Tip theo vit code ly ng dn ca tp tin sqlite v kim tra di, k t v tr 9 ca m VIN ging nh lm trong NhapMaVIN.m.
Hnh 6.138 Vit code ly ng dn database v kim tra v tr th 9 Nu kt qu tr v ca cc hm kim tra l sai, th xut thng bo, nu ng s trin khai tip trong hm else.
Hnh 6.139 Vit code x l cc gi tr tr v t hm kim tra Nu kt qu tr v l ng, th tin hnh thc hin code trong hm else. Vit code trong hm else tng t NhapMaVIN.h. Trc ht to cc cu lnh truy vn.
216
Hnh 6.140 Vit cu lnh truy vn Khai bo cc bin lu li cu lnh truy vn sau khi chun hot UTF-8.
Hnh 6.142 M kt ni ti c s d liu Vit code truy xut d liu cho cc v tr m VIN 1-3, 8, 10, 11.
217
Hnh 6.147 ng kt ni v vit code trng hp khng kt ni c sqlite Vit thm code chuyn d liu sang KQVIN
Hnh 6.148 Vit code chuyn d liu sang KQVIN To lin kt t button Tra M ca viewCamera sang viewNhanDien
219
Hnh 6.149 To lin kt t button Tra M sang view Nhn Din 6.2 PHN MM TM KIM A IM XUNG QUANH (PLACESNEARME) 6.2.1 Gii Thiu Khi i du lch, i chi u hay n mt ni xa l no hu ht chng ta u c nhu cu tm kim nhng a im xung quanh chng ta trong 1 khong cch no (100, 200mt,...).Chng hn: ATM, khch sn, qun n, cafe, khu du lch, sn bay... PlacesNearMe cho php chng ta lm c iu ny. 6.2.2 Chun B - thun tin cho vic build ng dng ln iPhone, ng dng s c vit trn phin bn XCode 4 (Xcode 4.6.3). - Mt ti khon Google s dng dch v Places API. - Mt b hnh nh s dng cho PlacesNearMe lc sn t Google (xem folder source). 6.2.3 Cu Trc Phn Mm PlacesNearMe c cu trc gm hai phn: ly d liu (Places API) v hin th d liu (Cc i tng trong Xcode).
220
Phn ly d liu s dng mt dch v do Google cung cp cho php tm kim cc a im xung quanh mt v tr no , dch v ny c gi l Places API. Places API s nhn vo cc t kha tm kim nh: ta , a im, khong cch cn tm v tr v mt dng vn bn c cu trc c gi l json. Phn hin th d liu da vo cc i tng h tr trong cng c lp trnh Xcode, lp trnh vin s x l v hin th d liu json ln giao din. Cc i tng in hnh trong Xcode m PlacesNearMe s dng: Map View, Web View, Alert View, Image View, Table View Controller 6.2.4 C Ch Vn Hnh Ca Placesnearme PlacesNearMe s gi Google cc t kho tm kim (ATM, School, Hospital,..) Google s tr v mt dng text c cu trc (json), da vo ngun d liu ng dng s x l v th hin ln iPhone.
221
223
Hnh 6.156 Cc tnh nng trn giao din thng tin chi tit ca ni tm kim
6.2.6 Tin Hnh ng dng s c tch thnh nhiu v d nh chy c lp vi nhau, sau khi hon thin cc v d, bn s ghp cc v d nh ny li to thnh 1 ng dng nh sau:
226
Hnh 6.164 To Single View Application Click Next v nhp tn ng dng, check vo cc i tng bn di s dng Storyboad ( dng khi thit k ng dng c nhiu View Controller).
227
228
229
Hnh 6.167 ng dng sau khi to xong Bc 2: Xo 2 file NATViewController.h v NATViewController.m v hai file ny s to mi hon ton.
Hnh 6.168 Xa hai file NATViewController Chn Move to Trash xo hon ton
230
Hnh 6.169 Move to Trash Ko th file MainStoryboard.storyboard vo Supporting Files tin cho vic qun l.
Hnh 6.170 Di chuyn MainStoryboard Bc 3: Click chn MainStoryboard.storyboard v xa giao din View Controller
231
Hnh 6.173 Giao din HomeViewController Ko th Table View Controller bng cch: Click chn MainStoryboard.storyboard nhn phm tt (Cmd + option + 0) hoc nhn vo gc phi pha trn chn hnh vung k cui show ca s Utilities.
233
Hnh 6.174 Chn i tng Table View Controller vo Ko th Table View Controller vo mn hnh thit k (Storyboard), kt qu nh sau.
234
Hnh 6.175 Giao din Table View Controller To Navigation Controller: Click chn Table View Controller click menu Editor Embed In Navigation Controller.
235
Hnh 6.177 Kt qu sau khi to Navigation Controller To lp i tng vit code cho Table View Controller.
236
Khung bn tri gc trn click phi chut vo Project New file (phm tt Cmd + N).
237
238
Chn TableViewController Identity inspector trong Class chn hoc nhp HomeViewController
Hnh 6.183 Thm class mi to cho Table View Controller To i tng Place vi cc thuc tnh: - imageName: tn hnh; - titleEn: tn hin th bng ting anh - titleVi: tn hin th bng ting vit - placeType: loi ni tm kim - keyWord: t kho tm kim To lp Place bng phm tt Cmd + N Objective-C Class.
240
Hnh 6.186 To New Folder lu class Nhp tn Classes click Create Create
Kt qu:
Hnh 6.188 Kt qu To mt Group tn Classes tin qun l, phi chut vo project New Group nhp Classes.
Hnh 6.191 Kt qu M Place.h khai bo cc thuc tnh lit k pha trn(Cch khai bo cc thuc tnh ny tng t nh getter/ setter ca C# hoc java).
244
@interface Place : NSObject @property (nonatomic, strong) NSString *imageName; @property (nonatomic, strong) NSString *titleEn; @property (nonatomic, strong) NSString *titleVi; @property (nonatomic, strong) NSString *placeType; @property (nonatomic, strong) NSString *keyWord; @end To lp PlaceManager qun l cc i tng Place, lp PlaceManager s c 2 phng thc chnh: - getArrPlaces: phng thc ny tr v mt mng gm cc Place - setPlace: dng khi to 1 i tng Place Tng t nh trn, to 1 class vi : Class: PlaceManager Subclass of: NSObject lu trong Classes.
245
Hnh 6.193 Kt qu
246
M file PlaceManager.h khai bo phng thc getArrPlaces, vic khai bo ny s gip chng ta gi trc tip phng thc getArrPlaces thng qua tn lp PlaceManager v lm c iu ny chng ta s s dng du + thay cho du - trc phng thc (tng t phng thc static bn C# hoc java).
@interface PlaceManager : NSObject + (NSMutableArray *) getArrPlaces; @end
M file PlaceManager.m , bn di di #import "PlaceManager.h", ta import thm lp Place.h s dng c s dng c cc phng thc getter/setter ca lp ny nh sau:
#import "PlaceManager.h" #import "Place.h"
Gii thch: phng thc setPlace tr v 1 i tng Place vi cc thuc tnh: image, titleEn, titleVi, placeType, keyWord. Cng file PlaceManager.m hin thc li phng thc getArrPlaces khai bo file PlaceManager.h trc nh sau:
+ (NSMutableArray *) getArrPlaces { //Lu : plateType & keyWord phi vit thng v chng l cc t kho ca Google (google 247
yu cu vit thng) return [[NSMutableArray alloc] initWithObjects: [self setPlace:@"atm.png" titleEn:@"ATM" titleVi:@"ATM" placeType:@"establishment" keyWord:@"atm"], [self setPlace:@"bank.png" titleEn:@"Bank" titleVi:@"Ngn hng" placeType:@"establishment" keyWord:@"bank"], [self setPlace:@"school.png" titleEn:@"School" titleVi:@"Trng hc" placeType:@"establishment" keyWord:@"school"], [self setPlace:@"bar.png" titleEn:@"Bar" titleVi:@"Bar" placeType:@"establishment" keyWord:@"bar"], [self setPlace:@"coffee_shops.png" titleEn:@"Cafe" titleVi:@"Cafe" placeType:@"establishment" keyWord:@"cafe"], [self setPlace:@"karaoke.png" titleEn:@"Karaoke" titleVi:@"Karaoke" placeType:@"establishment" keyWord:@"karaoke"], [self setPlace:@"bus_station.png" titleEn:@"Bus station" titleVi:@"Trm xe but" placeType:@"bus_station" keyWord:@""], [self setPlace:@"gas_station.png" titleEn:@"Gas station" titleVi:@"Trm xng" placeType:@"gas_station" keyWord:@"station"], [self setPlace:@"supermarket.png" titleEn:@"Supermarket" titleVi:@"Siu th" placeType:@"establishment" keyWord:@"supermarket"], [self setPlace:@"restaurant.png" titleEn:@"Restaurant" titleVi:@"Nh hng" placeType:@"establishment" keyWord:@"restaurant"], [self setPlace:@"lodging.png" titleEn:@"Hotel" titleVi:@"Khch sn" placeType:@"establishment" keyWord:@"hotel"], [self setPlace:@"park.png" titleEn:@"Park" titleVi:@"Cng vin" placeType:@"establishment" keyWord:@"park"], [self setPlace:@"movie_theater.png" titleEn:@"Movie theater" titleVi:@"Rp chiu" placeType:@"establishment" keyWord:@"movie theater"], [self setPlace:@"computer.png" titleEn:@"Computer store" titleVi:@"My tnh" placeType:@"establishment" keyWord:@"computer"], [self setPlace:@"post_office.png" titleEn:@"Post office" titleVi:@"Bu in" placeType:@"establishment" keyWord:@"post_office"], [self setPlace:@"train_station.png" titleEn:@"Train station" titleVi:@"Ga xe la" placeType:@"train_station" keyWord:@""], [self setPlace:@"airport.png" titleEn:@"Airport" titleVi:@"Sn bay" placeType:@"airport" keyWord:@""], [self setPlace:@"bakery.png" titleEn:@"bakery" titleVi:@"Tim bnh" placeType:@"establishment" keyWord:@"bakery"], [self setPlace:@"beauty_salon.png" titleEn:@"Beauty salon" titleVi:@"Lm p" placeType:@"establishment" keyWord:@"beauty_salon"], [self setPlace:@"spa.png" titleEn:@"Spa" titleVi:@"Spa" placeType:@"establishment" keyWord:@"spa"], [self setPlace:@"hair.png" titleEn:@"Hair care" titleVi:@"Tim un c" placeType:@"establishment" keyWord:@"hair"], [self setPlace:@"book_store.png" titleEn:@"Book Store" titleVi:@"Nh sch" 248
placeType:@"establishment" keyWord:@"book_store"], [self setPlace:@"cemetery.png" titleEn:@"Cemetery" titleVi:@"Ngha trang" placeType:@"establishment" keyWord:@"cemetery"], [self setPlace:@"church.png" titleEn:@"Church" titleVi:@"Nh th" placeType:@"establishment" keyWord:@"church"], [self setPlace:@"clothing_store.png" titleEn:@"Clothing store" titleVi:@"Qun o" placeType:@"establishment" keyWord:@"clothing_store"], [self setPlace:@"shoe_store.png" titleEn:@"Shoe store" titleVi:@"Dy dp" placeType:@"establishment" keyWord:@"shoe_store"], [self setPlace:@"convenience_store.png" titleEn:@"Convenience store" titleVi:@"Tim tp ho" placeType:@"establishment" keyWord:@"convenience_store"], [self setPlace:@"electronics_store.png" titleEn:@"Electronics store" titleVi:@"in t" placeType:@"electronics_store" keyWord:@""], [self setPlace:@"furniture_store.png" titleEn:@"Furniture store" titleVi:@"Ni tht" placeType:@"establishment" keyWord:@"furniture_store"], [self setPlace:@"sport.png" titleEn:@"Sport store" titleVi:@"Th thao" placeType:@"establishment" keyWord:@"sport"], [self setPlace:@"hospital.png" titleEn:@"Hospital" titleVi:@"Bnh vin" placeType:@"establishment" keyWord:@"hospital"], [self setPlace:@"pharmacy.png" titleEn:@"Pharmace" titleVi:@"Tim thuc" placeType:@"establishment" keyWord:@"pharmacy"], [self setPlace:@"library.png" titleEn:@"Library" titleVi:@"Th vin" placeType:@"establishment" keyWord:@"library"], [self setPlace:@"museum.png" titleEn:@"Museum" titleVi:@"Bo tng" placeType:@"establishment" keyWord:@"museum"], [self setPlace:@"parking.png" titleEn:@"Parking" titleVi:@"Bi xe" placeType:@"establishment" keyWord:@"parking"], [self setPlace:@"police.png" titleEn:@"Police" titleVi:@"Cnh st" placeType:@"police" keyWord:@""], [self setPlace:@"real_estate_agency.png" titleEn:@"Real estate agency" titleVi:@"Bt ng sn" placeType:@"establishment" keyWord:@"real_estate_agency"], [self setPlace:@"stadium.png" titleEn:@"Stadium" titleVi:@"Sn vn ng" placeType:@"establishment" keyWord:@"stadium"], [self setPlace:@"travel_agency.png" titleEn:@"Travel agency" titleVi:@"V my bay" placeType:@"establishment" keyWord:@"travel agency"], [self setPlace:@"veterinary_care.png" titleEn:@"Veterinary care" titleVi:@"Th y" placeType:@"establishment" keyWord:@"veterinary care"], [self setPlace:@"zoo.png" titleEn:@"Zoo" titleVi:@"S th" placeType:@"zoo" keyWord:@""], [self setPlace:@"car_dealer.png" titleEn:@"Car dealer" titleVi:@"i l xe hi" placeType:@"car_dealer" keyWord:@""], nil]; }
Gii thch:
249
- Phng thc getArrPlaces: tr v 1 mng cc i tng Place - [NSMutableArrayAlloc] initWithObjects: s gip chng ta khi to 1 mng cc i tng. - gi phng thc setPlace ta dng self <ten_phuong_thuc>. VD: [self setPlace:<tham_so_1> <tham_so_2> <tham_so_n>]; Gi th phng thc getArrPlaces va hin thc m bo chng ta c 1mng cc i tng Place. M file HomeViewController.m tm v xo cc dng sau loi b cnh bo:
#pragma mark - Table view data source #warning Potentially incomplete method implementation. #warning Incomplete method implementation.
Kt qu:
250
Kt qu:
{ [super viewDidLoad]; //Gi phng thc getArrPlaces v gn kt qu vo mng arrPlaces arrPlaces = [PlaceManager getArrPlaces]; }
Hnh 6.196 Hin th d liu hin th hnh nh dng li nh trn, chng ta cn to 1 lp GridViewCell,Cmd + N to 1 i tng Class: GridViewCell Subclass of: UITableViewCell Next.
252
@interface GridViewCell : UITableViewCell @property (nonatomic, strong) UIButton *column1; @property (nonatomic, strong) UIButton *column2; @property (nonatomic, strong) UIButton *column3; @end
Bn trn import <UIKit/UIKit.h> nh ngha cc thng s sau cho Cell ng thi import QuartzCore.h s dng cc hm cu hnh border trong lp ny:
#define CELL_WIDTH 92 // rng ca #define CELL_HEIGHT 80 //Chiu cao ca #define CELL_MARGIN_LEFT 20 //Cch l tri #define CELL_MARGIN_TOP 1 //Cch l trn #import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h>
To hm configColumn cu hnh giao din cho column. VD: V tr text trong column, font ch, kch thc ch, border,...
- (void)configColumn:(UIButton *)cln { //a text xung v tr cui cng cln.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom; //Thit lp mu ch font v kch thc [cln setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [cln.titleLabel setFont:[UIFont fontWithName:@"Arial" size:14.0]]; [cln.titleLabel setAdjustsFontSizeToFitWidth:YES]; //To border [cln.layer setBorderColor:[[UIColor colorWithWhite:0.8 alpha:1] CGColor]]; cln.layer.borderWidth = 1; //Thm cell vo view [self addSubview:cln]; }
254
Ti hm initWithStyle (y c th xem nh 1 Constructor bn C# hoc java), khi to d liu cho tng ct nh sau:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { column1 = [[UIButton alloc] initWithFrame: CGRectMake(CELL_MARGIN_LEFT, CELL_MARGIN_TOP, CELL_WIDTH, CELL_HEIGHT)]; [self configColumn:column1]; column2 = [[UIButton alloc] initWithFrame: CGRectMake(CELL_WIDTH + CELL_MARGIN_LEFT + 2, CELL_MARGIN_TOP, CELL_WIDTH, CELL_HEIGHT)]; [self configColumn:column2]; column3 = [[UIButton alloc] initWithFrame: CGRectMake(CELL_WIDTH + CELL_WIDTH + CELL_MARGIN_LEFT + 4, CELL_MARGIN_TOP, CELL_WIDTH, CELL_HEIGHT)]; [self configColumn:column3]; } return self; }
Gii thch: - Mi Column ca chng ta s l 1 button do chng ta cn s dng [[UIButton alloc] initWithFrame] khi to 1 button. - CGRectMake: hm ny s xc nh v tr, kch thc ca mt button gm cc tham s (l tri, l trn, rng, chiu cao). M file HomeViewController.m, hm numberOfSectionsInTableView sa 0 thnh 1:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 0; }
Hm numberOfRowsInSection sa li nh sau:
255
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return arrPlaces.count / 3; }
Thm hm configColumn thit lp hnh nn, tiu , hnh ng cho mi column (button)
- (void)configColumn:(UIButton *)column index:(int)index { NSString *image = [[arrPlaces objectAtIndex:index] imageName]; NSString *title = [[arrPlaces objectAtIndex:index] titleVi]; //Gn background cho column (button) [column setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:image]]]; //Gn tiu cho column [column setTitle:title forState:UIControlStateNormal]; //Thm hnh ng cho column [column addTarget:self action:@selector(clickButtons:) forControlEvents:UIControlEventTouchUpInside]; }
Hnh 6.199 Cu hnh cho Cell Chp th mc Images trong source v b vo bn trong project nh sau:
257
258
259
Hnh 6.203 Giao din kt qu Khi click vo cc hnh (button) s b li do chng ta cha c hm clickButton add trc (xem hm configColumn), thm hm selectedIndex v clickButton nh sau:
- (int)selectedIndex:(id)sender { NSString *selectedTitle = [sender currentTitle]; int i =0; for (Place *p in arrPlaces) { if ([selectedTitle isEqualToString:p.titleEn] || [selectedTitle isEqualToString:p.titleVi]) { return i; } i++; } return i; } 260
Gii thch: hm selectedIndex s gip chng ta xc nh v tr (index) m ngi dng click vo hnh nh Chy ng dng kt qu sau khi click vo cc hnh
Hnh 6.204 Kt qu Bc 5: Xy dng View Controller FindingPlaceViewController FindingPlaceViewController s hin th kt qu tm kim c t Google nh sau:
To thm 1 TableViewController, 1 lp FindingPlaceViewController v t tn cho TableViewCell l Cell. Ko th thm 1 TableViewController vo giao din thit k
262
263
Add lp va to FindingPlaceViewController vo TableViewController Chn TableViewController Identity inspector trong Class chn hoc nhp FindingPlaceViewController
Hnh 6.209 Thm class mi vo Table View Controller t tn Cell cho TalbeViewCell
265
Hnh 6.213 Key Google API Request th HTTP URL ca Google, tham kho ti Y. Google HTTP URL: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<v_>,<kinh_ >&radius=<khong_cch_tm>&types=<loi_ni_tm>&keyword=<API_KEY>&sens or=true&key=<t_kho_tm> VD: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=10.970396,106. 915351&radius=400&types=establishment%7Cestablishment&sensor=true&key=AIzaSy BKBekY4nxGHKh6wGqCtNGtMJRbl7FmTKM&keyword=school. Kt qu Google tr v ti liu dng json:
Gii thch: - location: bt u tm kim ti v tr no. VD: 10.953212,106.802378 - Radius: tm kim trong phm vi khong cch l bao nhiu (meters). VD: 400 met - Types: loi ni cn tm, nhng loi ni ny do Google nh ngha. VD: establishment, school, hostpital, atm,... Tham kho ti
https://developers.google.com/places/documentation/supported_types.
- Keyword: t kho cn tm, cho chng ta t nh ngha. VD: school, university,... - Key: API Key ng k trn. VD: AIzaSyBKBekY4nxGHKh6wGqCtNGtMJRbl7FmTKM To lp Google request cc HTTP URL ca Google. Lp Google s c cc phng thc tr v ti liu dng json. Cmd + N to lp mi Class: Google Subclass of: NSObject Next
Kt qu:
//khi c a im ri, chng ta s cn tm khong cch t v tr hin ti ti a im , //phng thc searchDistances s lm iu ny. + (NSDictionary *)searchDistances:(NSString *)origins destinations:(NSString *)destinations; //searchDetail s ly thng tin chi tit v mt ni no da vo tham s reference t //searchPlaces. + (NSDictionary *)searchDetail:(NSString *)reference; //searchPlacePhoto ly url ca mt tm hnh da vo photoReference t searchPlaces + (NSData *)searchPlacePhoto:(NSString *)photoReference; @end
NSData *imgData = [[NSData alloc] initWithContentsOfURL:url]; return imgData; } /*queryGooglePlaces s thc hin request mt url ln Google v tr v json, cc phng thc khc (searchPlaces, searchDistances, searchDetail, searchPlacePhoto) ch cn truyn vo 1 chui url v nhn kt qu json tr v.*/ + (NSDictionary *)queryGooglePlaces:(NSString *)urlGoogle { NSURL *googleResquestURL = [NSURL URLWithString:[urlGoogle stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSData *data = [NSData dataWithContentsOfURL:googleResquestURL]; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; return json; } @end
Di @implementation FindingPlaceViewController khai bo mng ton cc arrPlaceSearching hng kt qu tr v sau khi request ti Google v 1 bin coodinate lu to hin :
@implementation FindingPlaceViewController NSMutableArray *arrPlaceSearching; CLLocationCoordinate2D coordinate;
- (NSMutableArray *)searchPlacesFromGoogle:(NSString *)radius placeType:(NSString *)placeType keyword:(NSString *)keyword { //Tm kim cc a im t google. NSDictionary *json = [Google searchPlaces:coordinate radius:radius placeType:placeType keyword:keyword]; return [json objectForKey:@"results"]; }
Hnh 6.218 Kt qu chy th Da vo mng d liu NSDictionary nh trn, chng ta s trch cc thuc tnh: - name: tn a im - vicinity: a ch - units: s km - latitude: v - longitude: kinh - reference: ly thng tin chi tit ca a im Sau khi trch ra cc thuc tnh trn chng ta s y d liu vo i tng PlaceSearching, Cmd + N to i tng ny Class: PlaceSsearching Subclass of: NSObject.
272
Thm phng thc searchDistancesFromGoogle, phng thc ny s tr v 1 mng cc khong cch (s km):
- (NSMutableArray *)searchDistancesFromGoogle:(NSMutableArray *)arrPlaces { //Ly cc to (latitude,longitude) ca mng a im va tm c (arrPlaces) tm khong cch (s Km. VD: 2.5 Km) //v kt qu tm c vo mng arrDisstances. NSString *origins= [NSString stringWithFormat:@"%f,%f", coordinate.latitude, coordinate.longitude]; NSString *destinations = [self getDestinations:arrPlaces]; //da vo to gc v to ch ly s Km. NSDictionary *json = [Google searchDistances:origins destinations:destinations]; //(*) VD: NSLog(@"%@",[json objectForKey:@"rows"] objectAtIndex:0] objectForKey:@"elements"]); return [[[json objectForKey:@"rows"] objectAtIndex:0] objectForKey:@"elements"]; } - (NSString *)getDestinations:(NSMutableArray *)arrPlaces { NSString *strDestinations; if ([arrPlaces count] > 0) { NSDictionary *geometry = [[arrPlaces objectAtIndex:0] objectForKey:@"geometry"]; NSDictionary *location = [geometry objectForKey:@"location"]; NSString *lat = [location objectForKey:@"lat"]; NSString *lng = [location objectForKey:@"lng"]; 274
int count = [arrPlaces count]; //Gn to u tin vo chui strDestinations strDestinations = [NSString stringWithFormat:@"%@,%@", lat, lng]; //Ghp cc to cn li vo chui strDestinations phn cch bi du "|" for (int i=1; i<count; i++) { geometry = [[arrPlaces objectAtIndex:i] objectForKey:@"geometry"]; location = [geometry objectForKey:@"location"]; lat = [location objectForKey:@"lat"]; lng = [location objectForKey:@"lng"]; strDestinations = [NSString stringWithFormat:@"%@|%@,%@", strDestinations, lat, lng]; } } return strDestinations; }
Gii thch: - Phng thc getDestinations s ly ra tt c cc to trong mng m searchPlacesFromGoogle tr v, sau ghp cc to ny li thnh 1 chui cc to phn cch nhau bi du |. VD: 10.970549,106.915440|10.980949,106.915440|10.970549,106.915440|10.9809 49,106.915440 hoc NULL - Da vo to gc v chui to nh trn, hm searchDistancesFromGoogle s request ti Google v nhn v ti liu json cha cc khong cch, sau searchDistancesFromGoogle s chuyn json v thnh mng v tr mng v. C th hm searchDistancesFromGoogle s thc thi HTTP URL sau ca Google: http://maps.googleapis.com/maps/api/distancematrix/json?origins=10.953212, 106.802378&destinations=10.970549,106.915440|10.980949,106.915440|10.9 70549,106.915440|10.980949,106.915440&mode=walking&units=imperial&s ensor=true
275
Kt qu:
Hnh 6.221 Kt qu thc thi Chy th hm searchDistanceFromGoogle bng cch sa li hm viewDidLoad nh sau:
- (void)viewDidLoad { [super viewDidLoad]; coordinate.latitude = 10.953212; coordinate.longitude = 106.802378; NSString *radius = @"10000"; NSString *placeType = @"establishment"; NSString *keyWord = @"school"; arrPlaceSearching = [self searchPlacesFromGoogle:radius placeType:placeType keyword:keyWord]; NSLog(@"%@",[self searchDistancesFromGoogle:arrPlaceSearching]); }
Kt qu:
276
Hnh 6.222 Kt qu chy th Tng kt: sau 2 ln chy th, chng ta c 2 mng m phn t ca mi mng chnh l 1 NSDictionary (kiu d liu gm c key v value): Mng u tin c tr v t hm searchPlacesFromGoogle:
277
278
Hnh 6.224 Mng th hai tr v Ch nhng vung khoanh pha trn chnh l nhng thuc tnh ca lp PlaceSearching m ti cn ly ra. ly ra cc thuc tnh t 2 mng pha trn, ti s s dng 1 hm getPlaceSearching c nhim v ly cc thuc tnh ti khoanh pha trn v a vo 1 mng cc i tng PlaceSearching, hm ny nh sau:
//Tr v: mng arrPlaceSearching t 2 mng arrPlaces v arrDistances -(NSMutableArray *)getPlaceSearching:(NSMutableArray *)arrPlaces { NSMutableArray *arrPlaceSearching = [[NSMutableArray alloc] init]; if ([arrPlaces count] > 0) { NSMutableArray *arrDistances = [self searchDistancesFromGoogle:arrPlaces]; int count = [arrPlaces count]; for (int i=0; i<count; i++) { NSDictionary *geometry = [arrPlaces[i] objectForKey:@"geometry"]; NSDictionary *location = [geometry objectForKey:@"location"]; PlaceSearching *ps = [[PlaceSearching alloc] init]; ps.name = [[arrPlaces objectAtIndex:i] objectForKey:@"name"]; ps.vicinity = [[arrPlaces objectAtIndex:i] objectForKey:@"vicinity"]; ps.latitude = [location objectForKey:@"lat"]; ps.longitude = [location objectForKey:@"lng"]; ps.reference = [arrPlaces[i] objectForKey:@"reference"]; ps.units = [[[arrDistances objectAtIndex:i] objectForKey:@"distance"] 279
Kt qu:
Hnh 6.225 Kt qu tr v
280
Ti hm cellForRowAtIndexPath sa li nh sau:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; int row = indexPath.row; PlaceSearching *ps = [[PlaceSearching alloc] init]; ps = arrPlaceSearching[row]; // Configure the cell... //Set name UILabel *lblName = [self createLabel:CGRectMake(5, 5, 310, 20) font:@"Arial-BoldMT" size:17 text:ps.name]; [cell.contentView addSubview:lblName]; //Set vicinity UILabel *lblVicinity = [self createLabel:CGRectMake(5, 25, 290, 20) font:@"Arial" size:14 text:ps.vicinity]; 281
[cell.contentView addSubview:lblVicinity]; //Set numbers UILabel *lblNumbers = [self createLabel:CGRectMake(0, 48, 320, 10) font:@"Arial" size:10 text:[NSString stringWithFormat:@"%i",row+1]]; lblNumbers.textAlignment = NSTextAlignmentCenter; [cell.contentView addSubview:lblNumbers]; //Set Distance (kilometers) UILabel *lblDistance = [self createLabel:CGRectMake(260, 46, 60, 15) font:@"Arial" size:13 text:ps.units]; [cell.contentView addSubview:lblDistance]; return cell; }
282
Hnh 6.227 Map View Controller Thit k giao din: Click MainStoryboard.storyboar Ko th View Controller vo storyboard:
283
Hnh 6.228 Ko th View Controller Ko th mi tn t Finding Place View Controller sang View Controller.
285
Hnh 6.231 Ko th Toolbar vo giao din Ko th thm 3 Bar button item vo Toolbar:
Hnh 6.232 Ko th Bar button item vo Toolbar Gia cc Bar button ko th Flexible Space Bar Button Item
286
Hnh 6.233 Ko th Flexible Space Bar Button Item vo Cu hnh cho Bar button item u tin:
Hnh 6.234 Cu hnh Bar button item Cc bar button khc lm tng t vi image: map.png, full_screen.png, detail.png
Hnh 6.235 Cc button khc tng t To 1 Class MapViewController v add vo ViewController va to.
287
288
Hnh 6.238 Thm class cho MapViewController Map cc i tng vo file MapViewController.h Click MainStoryboard.storyboard click Assistant editor
289
Hnh 6.239 nh x i tng Click chn i tng cn map ko th vo gia @interface v @end:
290
Hnh 6.243 Kt qu Qua file MapViewController.m chng ta s thy c 3 phng thc mi xut hin:
291
Hnh 6.244 Ba phng thc mi Quay tr li giao din thit k ko thm 1 i tng Round Rect Button
Hnh 6.245 Thm i tng button Cu hnh cc thuc tnh cho Button Type: Custom Phn ni dung trng image: fullscreen_exit.png.
292
Hnh 6.248 Kt qu MapView M file MapViewController.h thm khi ngoc { } sau @interface MAPViewController : UIViewController Map cc thuc tnh:
294
Map Tng t cho i tng mi thm vo (Round Rect Button) nhng ko th vo trong khi { }
Hnh 6.251 Chn loi kt ni Tng t Map 2 i tng MapView v Toolbar MapView: Connection: outlet Name: myMapView Toolbar: Connection: outlet Name: toolBar
295
Hnh 6.253 Kt qu
296
Tin hnh import MapKit.h bng cch click vo project Tab Buil Phases Tab Link Binary With Libraries
Hnh 6.254 Thm Framework Click du + xut hin ca s cho php thm frameworks v libraries thm framework MapKit.framework
Hnh 6.255 Thm MapKit import th vin MapKit.h vo file MapViewController s khng cn li .
#import <UIKit/UIKit.h> 297
#import <MapKit/MapKit.h>
Hon tt qu trnh chun b giao din v Map cc i tng, Cmd + R Run th:
Hnh 6.256 Kt qu chy th Hin th Annotation ln MapView. Qua giao din Click chn vo MapView Check chn thuc tnh Shows User Location.
Chy th s thy xut hin Annotation mu xanh (chnh l v tr hin ti ca chng ta nhng do my o cha c nh v GPS nn v tr mc nh l v tr ca Apple)
Hnh 6.258 Kt qu chy th By gi chng ta s in (Plot) Annotation ln MapView, lm c iu ny chng ta cn to 1 lp Annotation Cmd + N to Object Objective-C Class Class: Annottion Subclass of: NSObject.
299
Gii thch: - Coordinate: gi to ca Annotation - Title: Tiu cho Annotation - Subtitle: Ni dung cho Annotation ly ra to hin ti chng ta khai bo thm bin locationManager trong file MapViewController.h bn di IBOutlet UIToolbar *toolBar;
CLLocationManager *locationManager;
Kt qu file MapViewController.h:
#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> @interface MAPViewController : UIViewController <CLLocationManagerDelegate> { IBOutlet MKMapView *myMapView; IBOutlet UIButton *btnExitFullScreen; IBOutlet UIToolbar *toolBar; CLLocationManager *locationManager; } 301
Hnh 6.261 Thm CoreLocation Framework M file MapViewController.m thm hm sau xc nh to hin ti:
- (void)startLocation { if (locationManager == nil) { locationManager = [[CLLocationManager alloc] init]; } locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; }
Ti viewDidLoad in th v tr nh sau:
- (void)viewDidLoad 302
Kt qu:
Hnh 6.262 Kt qu in th Da vo to hin ti 37.33233141, -122.03121860, in ra 1 Annontation mt v tr no gn vi to hin ti. VD: 37.43233141, -122.13121860. M file MapViewController.m Import lp Annotation to trc :
#import "Annotation.h"
- (void)viewDidLoad { [super viewDidLoad]; [self startLocation]; [self addAnnotation:@"37.43233141" longitude:@"-122.03121860" title:@"Nguyen Anh Tiep" subtitle:@"47 E/10 KP.9, P.Tan Hoa, BH-DN"]; }
Kt qu:
Hnh 6.263 Kt qu chy th phng to bn ti v tr hin ti, thm protocol MKMapViewDelegate. M file MapViewController.h sau protocol CLLocationManagerDelegate thm vo MKMapViewDelegate:
<CLLocationManagerDelegate, MKMapViewDelegate>
Mc ch: gi hm didAddAnnotationViews, hm ny s t gi khi mt Annotation no c thm vo MapView. M file MapViewController.m thm hm didAddAnnotationViews:
304
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { MKCoordinateRegion region; region = MKCoordinateRegionMakeWithDistance(locationManager.location.coordinate, 20000, 20000); [mapView setRegion:region animated:YES]; }
Hnh 6.264 Kt qu chy th Thc hin chc nng GPS, chc nng ny s xc nh v tr hin ti ca ngi dng trn MapView:
Hnh 6.266 Chy th Thc hin chc nng Map Type, chc nng ny cho php chng ta chn loi bn . VD: Map, Satellite, Hybrid
Hnh 6.267 Chc nng Map Type M MapViewController.h b sung protocol UIActionSheetDelegate:
306
Hnh 6.268 Kt qu chy th Nhng cha c g xy ra khi click vo button, gi chng ta s thm hm sau:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { switch (buttonIndex) { case 0: myMapView.mapType = MKMapTypeStandard; 307
break; case 1: myMapView.mapType = MKMapTypeSatellite; break; case 2: myMapView.mapType = MKMapTypeHybrid; break; default: break; } }
Hnh 6.269 Kt qu chy th Thc hin chc nng xem ton mn hnh bng cch n thanh Toolbar
M MapViewController.m ti hm touchBtnFullScreen:
- (IBAction)touchBtnFullScreen:(id)sender { btnExitFullScreen.hidden = NO; toolBar.hidden = YES; }
Hnh 6.272 chc nng thu nh mn hnh Map i tng trn (btnExitFullScreen) vi cc thuc tnh:
309
M MapViewController.m ti hm touchBtnExitFullScreen:
- (IBAction)touchBtnExitFullScreen:(id)sender { btnExitFullScreen.hidden = YES; toolBar.hidden = NO; }
Hnh 6.276 Ko th View Controller mi vo To mt Class tn PlaceDetailViewController v tr vo ViewController va to. Cmd + N to Object Class: PlaceDetailViewController Subclass of: UIViewController.
312
313
Hnh 6.279 Thm class cho View Controller Map cc i tng vo PlaceDetailViewController.h: Map (Outlet) cc i tng theo hnh sau:
314
IBOutlet UILabel *lblTitle; IBOutlet UILabel *lblAddress; IBOutlet UILabel *lblPhoneNumber; IBOutlet UILabel *lblWebsite; IBOutlet UILabel *lblGooglePlus; IBOutlet UIImageView *imgPhotoPlace; } - (IBAction)touchBtnPhone:(id)sender; @end
Thc hin chc nng hin th text ln giao din: Cmd + N to lp PlaceDetail Objective-C class Class: PlaceDetail Subclass of: NSObject.
315
Gii thch: phng thc ny s nhn vo 1 i tng PlaceDetail v hin th cc thuc tnh trong i tng ny ln giao din. Ti viewDidLoad to 1 i tng PlaceDetail v chy th.
317
Hnh 6.284 Giao din chy th Thc hin chc nng gi in thoi. M PlaceDetailViewController.m ti hm touchBtnPhone thm vo nh sau:
- (IBAction)touchBtnPhone:(id)sender { if (lblPhoneNumber.text) { NSString *temp = [lblPhoneNumber.text stringByReplacingOccurrencesOfString:@" " withString:@""]; NSString *phoneStr = [NSString stringWithFormat:@"telprompt://%@",temp]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneStr]]; } }
Gii thch: phng thc ny ly s in thoi t lblPhoneNumber loi b khong trng sau thc hin tnh nng gi bng phng thc sharedApplication. Chc nng gi chng ta s kim tra sau khi build ng dng ln iPhone tht n gin v Simulator khng th gi in. Bc 8 Xy dng WebViewController.
318
Hnh 6.285 Giao din webview Gii thiu: WebViewController c chc nng tng t nh mt trnh duyt web: li li (back), tip tho (next), lm ti (refrest). Thit k giao din nh sau (tng t cch thit k giao din ca MapViewController).
319
Hnh 6.286 Giao din Webview To mt Class WebViewController v tr vo ViewController va to: Cmd + N to mt object Objective-C class Class: WebViewController Subclass of: UIViewController.
Kt qu:
321
Hnh 6.290 Chc nng Back Nhn gi phm Ctrl v ko th i tng bar button Back vo UIWebView nh sau.
Hnh 6.291 Ko th button Back vo UIWebView Xut hin hp thoi Sendt Actions chn goBack
322
Hnh 6.293 Chc nng Next Thc hin tng t nh va ri chn goForward
Hnh 6.295 Chc nng Reload Thc hin tng t nh trn chn Reload.
Hnh 6.296 Chn Reload Thc hin chc nng m web vi Safari
Hnh 6.297 Chc nng m Web M file WebViewController Map (Action) cho i tng Safari.
324
Gii thch: phng thc sharedApplication c dng m mt chui url no nh: a ch website, s in thoi Thc hin m mt url cho UIWebView: Map (Outlet) cho i tng UIWebView
325
Ti hm viewDidLoad sa li nh sau:
- (void)viewDidLoad { [super viewDidLoad]; url = @"http://lhu.edu.vn"; [self loadURL:url]; }
Qua giao din ko th mi tn t Place Detail View Controller sang Web View Controller chy bng Web View Controller.
326
Hnh 6.300 t chy th Web View Controller Chnh li thuc tnh Scaling cho UIWebView l Scales Page To Fit.
327
Hnh 6.301 Ty chnh thuc tnh Scale Cmd + R chy th, kt qu:
Hnh 6.303 Activity Indicator View Gii thiu: Spinner dng thng bo cho ngi dng bit chng trnh vn ang chy. Ko th Activity Indicator View vo UIWebViewController.
Hnh 6.304 Ko th Activity Indicator Map (Outlet) Activity Indicator View vo file MapViewController.h
329
Gii thch: tt c cc phng thc va thm vo u c UIWebView t ng gi khi: - webViewDidStartLoad: gi khi UIWebView bt u load mt url no . - webViewDidFinishLoad: gi khi UIWebView load xong mt url no . - didFailLoadWithError: gi khi UIWebView load khng thnh cng mt url no . Spinner t n hin chng ta cn thit lp thuc tnh Hides When Stopped cho Spinner.
Hnh 6.306 Hide When Stopped M WebViewController.m b sung thm myWebView.delegate = self; v chy th, kt qu:
331
332
Gii thiu: SearchingHomeViewController gip ngi dng tm kim cc a im nhanh hn. Thit k giao din: Ko th TableViewController
Hnh 6.309 Ko th Table View Thm Search Bar and Search Diplay Controller.
333
334
Hnh 6.313 Kt qu sau khi to class Qua giao din tr vo Table View Controller.
335
Hnh 6.314 Tr class vo Table View Hin th d liu ln giao din: Map (Outlet) i tng Search Bar and Search Diplay Controller vi tn mySearchBar
UIImageView *imgImage = [[UIImageView alloc] initWithFrame:CGRectMake(12, 4, 52, 40)]; imgImage.image = [UIImage imageNamed:[place imageName]]; [cell.contentView addSubview:imgImage]; return cell; }
Chy th:
Hnh 6.316 Kt qu chy th Thc hin tm kim: M SearchingHomeViewController.m Thm phng thc searchThroughData
- (void)searchThroughData { arrSearchingResults = nil; NSPredicate *resultsPredicate; resultsPredicate = [NSPredicate predicateWithFormat:@"SELF.titleVi contains [search] %@", mySearchBar.text]; arrSearchingResults = [[arrPlaces filteredArrayUsingPredicate:resultsPredicate] mutableCopy]; } 338
Gii thch: phng thc ny s dng filteredArrayUsingPredicate tm kim ni dung trong 1 mng (arrPlaces). Sau khi tm xong s tr kt qu v cho mng arrSearchingResults. Thm phng thc textDidChange
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { [self searchThroughData]; }
Gii thch: y l phng thc c sn ca i tng searchBar, phng thc ny c gi khi ni dung trong searchBar thay i v mi khi thay i nh vy chng ta s gi ti phng thc searchThroughData tm kim kt qu. Sa li phng thc numberOfRowsInSection
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (tableView == self.tableView) { return arrPlaces.count; } else { [self searchThroughData]; return arrSearchingResults.count; } }
Gii thch: phng thc ny cho bit s dng trong mt table, chng ta s phn ra 2 trng hp, trng hp mc nh tc khi cha s dng searchBar tm kim th s dng trong table chnh l s phn t trong mng arrSearchingResults, trng hp cn li khi s dng tm kim (searchBar) th s dng trong table chnh l s phn t trong mng arrSearchingResults cng chnh l s kt qu tm c. Chy th, kt qu:
339
Hnh 6.317 Kt qu chy th Bc 10: Lin kt cc ViewController: cc phn trc bn thit k cc ViewController nh: HomeViewController, SearchingHomeViewController, FindingPlaceViewController, MapViewController, PlaceDetailViewController, WebViewController. Cc ViewController ny hon ton c th chy c lp v trong phn ny nhim v ca bn l lin kt tt c cc ViewController li vi nhau. Lin kt gia Home View Controller v Searching Home View Controller:
340
Hnh 6.318 Lin kt Home v Searching Home Ti Home View Controller ko th Round Rect Button vo Navigation Bar v thit lp cc thuc tnh cho button nh sau:
341
Hnh 6.319 Ko th button vo Nhp chut ra ngoi v click chn li button identifier: Custom.
Hnh 6.320 Ty chnh button Thit lp rng v chiu cao cho button:
342
Hnh 6.321 Thit lp chiu rng cao cho button Gi Ctrl v ko th button search t Home View Controller sang Searching Home View Controller.
343
Hnh 6.324 Kt qu chy th Lin kt gia Home View Controller v Finding Place View Controller.
344
Hnh 6.325 Lin kt Home vi Finding Ti Home View Controller nhp chn Cell gi Ctrl v ko th sang Finding Place View Controller.
345
Hnh 6.328 t thuc tnh identifer M HomeViewController.m thm on code sau vo cui hm clickButtons.
[self performSegueWithIdentifier:@"FindingPlace" sender:nil];
Gii thch: performSegueWithIdentifier cho php chng ta chuyn View Controller bng code.
346
Hnh 6.329 Kt qu chy th Lin kt gia Finding Place View Controller v Map View Controller.
Ti Finding Place View Controller nhp chn Cell gi Ctrl v ko th sang Map View Controller.
348
Hnh 6.323 Kt qu chy th Lin kt gia Map View Controller v Place Detail View Controller.
349
Ti Map View Controller nhp chn button detail (gc phi di cng) gi Ctrl v ko th sang Place Detail View Controller.
Hnh 6.326 Chn Push C th giao din bn Place Detail View Controller s b lch i, bn t canh chnh li. Chy th, kt qu.
350
Hnh 6.327 Kt qu chy th Lin kt gia Place Detail View Controller v Web View Controller.
351
Ti Place Detail View Controller nhp chn button website (hnh tri a cu) gi Ctrl v ko th sang Web View Controller.
352
353
Hnh 6.333 Kt qu chy th Bc 11: Hon thin ng dng. Hon thin Home View Controller. Thm chc nng thit lp khong cch tm kim. Ti Home View Controller nht gi Ctr v ko th i tng button v Navigation Bar thit lp cc thuc tnh nh hnh.
354
Hnh 6.334 Thit lp thuc tnh Map (Outlet) i tng button vo dile HomeViewController.h vi tnbtnDistance.
Hnh 6.335 nh x i tng Map (Action) i tng button vo file HomeViewController.h vi tn touchBtnDistance
355
Gii thch: phng thc changeSlider c gi khi ngi dng thay i khong cch tm kim. changeSlider s thc hin thay i v lu li gi tr khong cch vo button btnDistance.
- (NSString *)getDistance { NSString *strDistance = btnDistance.titleLabel.text; return [strDistance substringToIndex:strDistance.length-2]; }
356
Gii thch: phng thc getDisstance c s dng loi b m ca khong cch tm kim. VD: 1000 m 1000.
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { [btnDistance setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; }
Gii thch: phng thc actionSheet c gi t ng khi ngi dng bt u thay i slider, phng thc ny s thc hin i mu ch. Sa li hm touchBtnDistance nh sau:
- (IBAction)touchBtnDistance:(id)sender { NSString *title; NSString *cancel; title = @"Chn khong cch tm kim t v tr ca bn (meters)"; cancel = @"ng"; UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:cancel destructiveButtonTitle:nil otherButtonTitles:nil]; //Thm Slider vo ActionSheet UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(30, -50, 260, 70)]; slider.minimumValue = 100; slider.maximumValue = 50000; slider.value = [[self getDistance] floatValue]; [slider addTarget:self action:@selector(changeSlider:) forControlEvents:UIControlEventValueChanged]; [actionSheet addSubview:slider]; //Thm Title vo ActionSheet UILabel *lblTitle = [[UILabel alloc] initWithFrame:CGRectMake(0, -80, 300, 40)]; lblTitle.text = title; lblTitle.numberOfLines = 0; lblTitle.textAlignment = NSTextAlignmentCenter; [lblTitle setBackgroundColor:[UIColor clearColor]]; lblTitle.textColor = [UIColor whiteColor]; [actionSheet addSubview:lblTitle]; //Chnh li v tr ca ActionSheet [actionSheet showInView:self.view]; [actionSheet setBounds:CGRectMake(0,-90, 320, 280)]; } 357
Gii thch: khi ngi dng chm vo btnDistance, phng thc touchBtnDistance s c gi, phng thc ny s hin th giao din ActionSheet ngi dng thay i khong cch. Chy th, kt qu:
Hnh 6.337 Kt qu chy th Thm chc nng thit lp ngn ng: Ti Home View Controller thm button nh hnh v:
358
Hnh 6.339 Cu hnh button Map (Outlet) cho button vi tn btnLanguage v Map (Action) vi tn touchBtnLanguage, kt qu HomeViewController.h:
#import <UIKit/UIKit.h> @interface HomeViewController : UITableViewController <UIActionSheetDelegate> 359
360
Hnh 6.340 Kt qu chy th Ly to hin ti ca ngi dng chun b truyn sang Finding Place View Controller. M HomeViewController.h, import CoreLocation thm protocol CLLocationManagerDelegate v bin locationManager:
#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface HomeViewController : UITableViewController <UIActionSheetDelegate, CLLocationManagerDelegate> { IBOutlet UIButton *btnDistance; IBOutlet UIButton *btnLanguage; CLLocationManager *locationManager; } - (IBAction)touchBtnDistance:(id)sender; - (IBAction)touchBtnLanguage:(id)sender; @end
- (void)startLocation { if (locationManager == nil) { locationManager = [[CLLocationManager alloc] init]; } locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { [locationManager stopUpdatingLocation]; }
Thm [self startLocation]; vo cui phng thc viewDidLoad, chy th v click vo button language, kt qu:
Hnh 6.341 Kt qu chy th Truyn d liu qua Finding Place View Controller truyn d liu gia cc ViewController ta s dng NSUserDefault v truyn mt i tng vi NSUserDefault th i tng phi c 2 phng thc decoder v encoder M Place.h pha trn #import thm cc key nh sau:
#define ImageNameKey @"ImageNameKey" #define TitleEnKey @"TitleEnKey" #define TitleViKey @"TitleViKey" #define PlaceTypeKey @"PlaceTypeKey" #define KeyWordKey @"KeyWordKey"
#import "Place.h" @implementation Place @synthesize imageName, titleEn, titleVi, placeType, keyWord; - (id)initWithCoder:(NSCoder *)decoder { self = [super init]; if(self) { imageName = [decoder decodeObjectForKey:ImageNameKey]; titleEn = [decoder decodeObjectForKey:TitleEnKey]; titleVi = [decoder decodeObjectForKey:TitleViKey]; placeType = [decoder decodeObjectForKey:PlaceTypeKey]; keyWord = [decoder decodeObjectForKey:KeyWordKey]; } return self; } - (void)encodeWithCoder:(NSCoder *)encoder { [encoder encodeObject:imageName forKey:ImageNameKey]; [encoder encodeObject:titleEn forKey:TitleEnKey]; [encoder encodeObject:titleVi forKey:TitleViKey]; [encoder encodeObject:placeType forKey:PlaceTypeKey]; [encoder encodeObject:keyWord forKey:KeyWordKey]; } @end
Gii thch: hm ny s gi i tng Place sang cc ViewController khc v kim tra tn ti wifi hoc cho php s dng Location Services hay cha. Thm hm prepareForSegue nh sau:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { CLLocationCoordinate2D coordinate = locationManager.location.coordinate; NSUserDefaults *passingValue = [NSUserDefaults standardUserDefaults]; [passingValue setFloat:coordinate.latitude forKey:@"currentLatitude"]; [passingValue setFloat:coordinate.longitude forKey:@"currentLongitude"]; [passingValue setObject:[self getDistance] forKey:@"distance"]; }
Gii thch: hm ny s s dng NSUserDefaults truyn d liu(to , khong cch) qua cc ViewController khc. Hon thin Finding Place View Controller. Hin th ng a im ngi dng cn tm t Home View Controller M FindingPlaceViewController.m import Place.h:
#import "Place.h"
Thm phng thc passingPlace nhn i tng place m Home View Controller truyn i.
- (Place *)passingPlace { NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"Place"]; return [NSKeyedUnarchiver unarchiveObjectWithData:data]; }
Ti viewDidLoad sa li nh sau:
- (void)viewDidLoad { [super viewDidLoad]; NSUserDefaults *passingValue = [NSUserDefaults standardUserDefaults]; coordinate.latitude = [[passingValue objectForKey:@"currentLatitude"] floatValue]; coordinate.longitude = [[passingValue objectForKey:@"currentLongitude"] floatValue]; NSString *radius = [passingValue objectForKey:@"distance"]; 364
Place *place = [[Place alloc] init]; place = [self passingPlace]; NSString *placeType = place.placeType; NSString *keyWord = place.keyWord; NSMutableArray *arrPlaces = [self searchPlacesFromGoogle:radius placeType:placeType keyword:keyWord]; arrPlaceSearching = [self getPlaceSearching:arrPlaces]; self.navigationItem.title = place.titleVi; }
Hnh 6.342 Kt qu chy th Thm tnh nng tm kim: Ti Finding Place View Controller ko th Round Rect Button vo Navigation Bar v thit lp cc thuc tnh cho button nh sau:
365
Hnh 6.343 Thm Button vo giao din Nhp chut ra ngoi v click chn li button identifier: Custom.
Hnh 6.344 B sung Identifier Thit lp rng v chiu cao cho button:
366
Hnh 6.345 Thit lp chiu cao rng ca button Map (Action) button search vi tn touchBtnSearch:
Hnh 6.346 nh x i tng Qua giao din ko thm Search Bar and Search Diplay Controller vo Finding Place View Controller.
367
Hnh 6.347 Thm Search bar Map (Outlet) i tng Search Bar vi tn searchBar
- (IBAction)touchBtnSearch:(id)sender; @end
Sa li hm numberOfRowsInSection nh sau:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (tableView == self.tableView) { return arrPlaceSearching.count; } else { [self searchThroughData]; return arrFilteringResults.count; } }
Ti hm cellForRowAtIndexPath, thay th on code sau vo gia static NSString *CellIdentifier = @"Cell"; v // Configure the cell...:
static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 369
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; cell.selectionStyle = UITableViewCellAccessoryNone; int row = indexPath.row; PlaceSearching *ps; if (tableView == self.tableView) { ps = [arrPlaceSearching objectAtIndex:row]; } else { ps = [arrFilteringResults objectAtIndex:row]; } // Configure the cell...
Qua giao din t tn cho lin kt gia Finding Place View Controller v Map View Controller l MapView.
370
Hnh 6.350 Kt qu chy th Truyn d liu qua cc ViewController khc Tng t nh truyn i tng Place, m PlaceManager.h thm vo cc key trc #import...
#define NameKey @"NameKey" #define VicinityKey @"VicinityKey" #define UnitsKey @"UnitsKey" #define LatitudeKey @"LatitudeKey" #define LongitudeKey @"LongitudeKey" #define ReferenceKey @"ReferenceKey"
if(self) { name = [decoder decodeObjectForKey:NameKey]; vicinity = [decoder decodeObjectForKey:VicinityKey]; units = [decoder decodeObjectForKey:UnitsKey]; latitude = [decoder decodeObjectForKey:LatitudeKey]; longitude = [decoder decodeObjectForKey:LongitudeKey]; reference = [decoder decodeObjectForKey:ReferenceKey]; } return self; } - (void)encodeWithCoder:(NSCoder *)encoder { [encoder encodeObject:name forKey:NameKey]; [encoder encodeObject:vicinity forKey:VicinityKey]; [encoder encodeObject:units forKey:UnitsKey]; [encoder encodeObject:latitude forKey:LatitudeKey]; [encoder encodeObject:longitude forKey:LongitudeKey]; [encoder encodeObject:reference forKey:ReferenceKey]; } @end
Sa li viewDidLoad nh sau:
- (void)viewDidLoad 372
{ [super viewDidLoad]; [self startLocation]; myMapView.delegate = self; NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"PlaceSearching"]; PlaceSearching *ps = [NSKeyedUnarchiver unarchiveObjectWithData:data]; [self addAnnotation:ps.latitude longitude:ps.longitude title:ps.name subtitle:ps.vicinity]; self.navigationItem.title = ps.name; }
Hnh 6.351 Kt qu chy th Thm button home Trn button Home nhn gi Ctrl v ko th v Navigation Controller
373
Hnh 6.353 nh x i tng Hon thin Place Detail View Controller Thc hin load d liu t Google M PlaceDetailViewController.m import Google.h v PlaceSearching.h
#import "Google.h" #import "PlaceSearching.h"
PlaceDetail *pd = [[PlaceDetail alloc] init]; pd.name = [result objectForKey:@"name"]; pd.address = [result objectForKey:@"formatted_address"]; pd.phoneNumber = [result objectForKey:@"formatted_phone_number"]; pd.website = [result objectForKey:@"website"]; pd.googlePlus = [result objectForKey:@"url"]; pd.photos = [result objectForKey:@"photos"]; return pd; } - (NSData *)searchPlacePhotoFromGoogle:(NSString *)photoReference { return [Google searchPlacePhoto:photoReference]; }
Sa li viewDidLoad nh sau:
- (void)viewDidLoad { [super viewDidLoad]; NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"PlaceSearching"]; PlaceSearching *ps = [NSKeyedUnarchiver unarchiveObjectWithData:data]; PlaceDetail *pd = [self searchPlaceDetailFromGoogle:ps.reference]; [self displayPlaceDetail:pd]; }
Hnh 6.355 Kt qu chy th Thm button home. Thm button home nh giao din sau.
376
Hnh 6.356 Thm button Home Trn button Home nhn gi Ctrl v ko th v Navigation Controller.
377
Hnh 6.358 Chn Modal Truyn d liu sang Web View Controller. Thm phng thc sau:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSString *url; if ([sender currentImage] == [UIImage imageNamed:@"website.png"]) { url = lblWebsite.text; } else { url = lblGooglePlus.text; } [[NSUserDefaults standardUserDefaults] setObject:url forKey:@"url"]; }
Hon thin Web View Controller Thm button home Thm button home nh giao din sau:
378
Hnh 6.359 Thm button Home Trn button Home nhn gi Ctrl v ko th v Navigation Controller.
379
Hnh 6.361 Chn modal Nhn Url t Place Detail View Controller. M WebViewController.m sa li viewDidLoad nh sau:
- (void)viewDidLoad { [super viewDidLoad]; url = [[NSUserDefaults standardUserDefaults] objectForKey:@"url"]; if (!url) { url = @"https://www.google.com"; } [self loadURL:url]; myWebView.delegate = self; }
Hon thin SearchingHomeViewController. Lin kt gia Searching Home View Controller v Finding Place View Controller. Qua giao din ko th Cell t Searching Home View Controller sang Finding Place View Controller.
380
381
382
Hnh 6.365 Kt qu chy th i mu Navigation Bar. M HomeViewController.m thm phng thc sau:
- (void)configNavigationBarBackground:(UIColor *)bgColor fontColor:(UIColor *)fontColor{ //set bar color self.navigationController.navigationBar.tintColor = bgColor; self.navigationController.navigationBar.alpha = 0.9f; self.navigationController.navigationBar.translucent = YES; [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:fontColor forKey:UITextAttributeTextColor]]; //set back button color [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:fontColor, UITextAttributeTextColor,nil] forState:UIControlStateNormal]; }
383
384
CHNG VII A NG DNG LN IPHONE Sau khi xy dng hon chnh ng dng cho iPhone, bn cn phi a ng dng ln chy trn thit b iPhone tht kim tra li hot ng ca ng dng trn iPhone. Ngay c khi bn cn ng xy dng ng dng trn Xcode, nhiu ng dng bn cng phi a ln thit b tht mi kim tra c tnh nng, do iOS Simulator tuy m phng iPhone nhng vn cn mt s im hn ch nh khng c camera, khng c microphone Hn na bn s c c mt cm thy ho hng, phn khi khi nhn thy ng dng hon thin ca bn chy n nh trn iPhone ca bn hay trn iPhone ca bn b. Do iu kin cho php cn nhiu hn ch nn ni dung chng ny ch gii thiu n bn cch thc a ng dng ln iPhone jailbreak bng cng c JailCoder. Sau khi c xong chng ny, bn s nm c qu trnh chun b trc khi a ng dng ln iPhone, cng nh cch thc tng bc a ng dng ln iPhone bng cng c JailCoder.
7.1 GII THIU build ng dng ln iPhone (my tht), Apple yu cu lp trnh vin phi c ti khon Apple Developer v chi ph cho 1 ti khon nh vy l 99$/nm, vy th nu chng ta cha c iu kin sm 1 ti khon 99$ liu c cch no build ng dng ln iPhone. Jail Coder gip chng ta lm c iu ny m khng phi mt ti khon 99$ v ng nhin y l mt cch khng chnh thng do vn cn nhiu nhc im khi s dng Jail Coder. Hn na s dng c Jail Coder hiu qu i hi iPhone phi c Jailbreak sn. Bn c th tm hiu thm v Jailbreak iPhone ti: Tinh t: http://www.tinhte.vn/forums/thay-doi-nang-cap-firmware.163/ GSM: http://gsm.vn/forums/firmware-jailbreak-unlock.502/ Heaveniphone: http://heaveniphone.com/forums/22-iphone-hoi-dap-thac-mac-phanmem.html 7.2 QU TRNH CHUN B Bc 1: Download cng c Jail Coder ti http://oneiros.altervista.org/jailcoder/. Jail Coder c ci t trn cc h iu hnh OSX nh Mac OSX Leopard, Snow Leopard, Lion, Lion Mountain Bc 2: Tho cc yu cu sau: - S dng Xcode 3 n Xcode 4. - ci dt AppSync, vo Cydia tm v ci t phn mm AppSync. Lu nn ci t AppSync tng ng vi phin bn iOS chng ta ang s dng. V d: iPhone ang dng iOS 6.x.x th s ci AppSync for iOS6.
386
Hnh 7.1 AppSync - iPhone dng a ng dng ln phi l iPhone c Jailbreak, nhng iPhone Jailbreak hu ht u c icon Cydia trn giao din home ca iPhone.
Hnh 7.2 Biu tng Cydia trn mn hnh - Thot hon ton XCode v cc iOS Simulator ang chy trc khi tin thnh Jail Coder. - Phin bn iOS ang s dng trn iPhone phi ln hn hoc bng phin bn iOS m ng dng chng ta ang s dng.
387
V d: iPhone ang s dng iOS 6, bn mun build ng dng no ln iPhone th ng dng phi s dng iOS SDK 6 tr xung. 7.3 TIN HNH Bc 1: m Jail Coder Click Guided Path.
Hnh 7.6 Keychain Access Click Always Trust trust Certificate iPhone Developer, ca s yu cu nhp password xut hin, nhp password hin ti ca my Mac chn Update eStting.
389
Hnh 7.7 Nhp mt khu Quay li ca s Jail Coder click Certificate Private, tng t nhp password (3 ln), s hin th thng bo li nhng khng sao click Ok.
390
Hnh 7.10 Thng bo li Nu thnh cng chng ta s thy Certificate iPhone Developer c thm vo Keychain Access nh sau:
Hnh 7.11 Certificate iPhone Developer Quay li ca s Jail Coder click Next
391
Hnh 7.13 Patch my Xcode Click Patch my Xcode xut hin ca s yu cu nhp password.
Hnh 7.14 Nhp mt khu Nu thnh cng s xut hin giao din nh sau
Hnh 7.15 Giao din Patch thnh cng Click Back to Main Menu patch project m chng ta cn build ln iPhone.
392
Hnh 7.16 Ti giao din chnh chn Patch my Project Click Patch My Project sau ko th file *.xcodeproj vo khung Drop here your project!
Hnh 7.16 Ko th project vo Nu thnh cng chng ta s thy JailCoder thng bo Pathed!
Bc 2: Kt ni iPhone vo my tnh, nu iPhone t password th phi nhp password m iPhone hoc tt hn nn b password ca iPhone. Bc 3: M Project m chng ta path trc , ch khong 1 pht ( check ID v nhng th linh tinh) s thy xut hin thit b ca chng ta.
Hnh 7.18 Thit b iPhone xut hin trong Xcode Bc 4: M Buil Phaces tab Run Script check vo Run script only when installing
Hnh 7.19 Chn Run script trong Build Phaces Bc 5: Run ng dng, nu thnh cng s thy ng dng ca chng ta trn iPhone.
394
Hnh 7.20 ng dng Run thnh cng s c iCon trn mn hnh Lu : nu xut hin thng bo Launch nh sau th khng sao ht.
395
CHNG VIII MT S VN KHC Mc d iOS 7 chnh thc c a vo s dng v cho php nng cp ln t cc phin bn iOS trc o. Tuy nhin v mt s l do nh iu kin kinh t, iOS 7 cn li, cha c jailbreak nn ngi dng vn cn dnh s u i cho phin bn iOS c hn. Do khi bn tin hnh xy dng mt ng dng cho iPhone, bn phi suy ngh xem ng dng ca bn s h tr cho phin bn iOS no hay s h tr cho c hai. Nu ng dng ca bn h tr c c iOS 7 ln cc phin bn th l mt iu tuyt vi. ng dng c th tng thch c nhiu i my, nhiu phin bn iOS, tip cn c nhiu ngi dng hn. Tuy nhin bn s t cu hi lm sao ng dng ca bn c th tng thch c nh vy? Bn ng qu lo lng v vic ny, Xcode h tr sn cho bn. Cc vn c trnh by trong chng ny s gip bn hiu hn v cch thc vit mt ng dng cho phin bn iOS c bng cng c Xcode 5, ng thi ni dung chng cng gip bn khm ph tnh nng h tr xy dng ng dng c th chy song song iOS 7 v cc phin bn iOS c hn m Xcode 5 mang n.
396
8.1 XY DNG NG DNG CHO IOS 6 - IOS 6.1 TRN XCODE 5 Xcode 5 c s dng vit ng dng cho cc nn tng iOS 6 v mi hn (iOS 7). Tuy nhin sau khi ci c iOS 6 SDK cho iOS Simulator th bn vn cha th dng Xcode 5 vit ng dng cho iOS 6 cng nh chy th chng trnh trn iOS Simulator vi iOS 6 SDK. Bn cn phi thng qua mt s thao tc tinh chnh cho project ng dng trc khi c th vit chng trnh cho iOS 6 v chy c trn iOS Simulator vi iOS 6 SDK. Sau y l v d minh ha vic xy dng ng dng cho iOS 6 bng Xcode 5. Trc tin cc bn to mi mt project, y project c tn l Ung dung iOS 6.
397
Hnh 8.2 in thng tin Project Trong phn thng tin ca Project, ti mc iOS Deployment Target, la chn phin bn iOS cho ng dng.
398
Trong phn Build Settings, mc Architectures, bn chn Standard architetures (armv7, armv7s) c th chy c ng dng trn iOS Simulator vi iOS 6. V mc nh ca Xcode 5 s l Standard architetures (including 64-bit) h tr b x l mi ca Apple cho iPhone vi cng ngh 64bit.
Hnh 8.4 Chn Standard architecture (armv7, armv7s) Chn tp tin Storyboard, bn Utility area, chn File inspector. Ti mc Interface Builder Document, mc nh ca project l c m bng Xcode 5, nu bn mun m ln bng Xcode 4 th bn la chn Xcode 4 trong mc Opens in.
399
Hnh 8.5 La chn phin bn Xcode m project Ti mc Build for, bn chn iOS 6.1 and Later build ng dng cho iOS 6 hoc mi hn.
Hnh 8.7 La chn cch hin th ca giao din khi thit k Sau khi thit lp xong cho project th cc bn c th thit k giao din v vit code cho ng dng mt cch bnh thng. Cc bn thit k giao din gm mt Button, mt Label.
Hnh 8.9 nh x cc i tng Sau khi nh x xong, tin hnh vit code cho s kin ca button khi ngi dng chm vo. Khi ngi dng chm vo button th label s hin th ni dung Xin chao ban da den voi ung dung tren iOS 6 viet bang Xcode 5.
Hnh 8.10 Vit code cho s kin Chn phin bn iOS 6 cho iOS Simulator ri chn Run.
402
Hnh 8.11 Chy ng dng trn iOS Simulator iOS 6.1 Kt qu khi chm vo button.
Hnh 8.12 Giao din iOS Simulator khi chy ng dng 8.2 XY DNG NG DNG H TR NHIU VERSION IOS Mc d iOS 7 chnh thc ra mt, tuy nhin s lng ln ngi dng vn ang cn iOS 6 ch cha hon ton nng cp ln ht. Do khi vit ng dng, iu t ra l bn vit ng dng cho phin bn iOS no, nu bn vit cho iOS 7 th ng dng ch chy c trn iOS 7, nu bn vit cho iOS 6 th ng dng ch chy c trn iOS 6. Cu hi
403
t ra l liu c th vit ng dng c th chy trn iOS 7 ln iOS 6 hay khng, ch c th mi tip cn c nhiu ngi dng ? Cu tr li l c. Bn c th tham kho thm v vic h tr iOS 6 v iOS 7 ti y. https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/ TransitionGuide/index.html#//apple_ref/doc/uid/TP40013174 Cng vi ng dng minh ha trong phn trn, bn chn Assistant Editor ( )
chia i Editor area cho d quan st. Trong menu ca Assistant Editor, bn chn Preview > chn Storyboard xem giao din ng dng trn khung Editor va mi m ra.
Hnh 8.13 Chn Preview > Storyboard Ti ca s giao din mi ny, bn chn xem vi ch iOS 7 and Later. Nh vy l bn c th xem c giao din ca ng dng ch iOS 6 v iOS 7 cng lc. Lc ny bn c th thit k giao din v tinh chnh sao cho n nh v giao din ca iOS 6 ln iOS 7.
404
Hnh 8.14 Xem giao din vi ch iOS 7.0 and Later Trong project, bn nh du vo Use Autolayout ng dng t ng nhn din phin bn iOS v s cho ra giao din tng thch vi tng phin bn.
405
Hnh 8.16 Giao din khi chy bng iOS Simulator vi iOS 7 Giao din khi chy bng iOS Simulator vi iOS 6.1
Hnh 8.17 Giao din khi chy bng iOS Simulator vi iOS 6.1
406
CU HI THNG GP T hc lp trnh iPhone c c khng? Bn c th t hc lp trnh iPhone, tuy nhin thi gian s lu hn v i hi bn phi kin nhn, tm hiu nhiu t cc ti liu, video, internet. Ngi cha bit g v lp trnh c hc vit ng dng iPhone c khng? Bn cha bit g v lp trnh vn c th hc vit ng dng cho iPhone nh bao ngi khc ch cn bn c am m, sing nng hc v thc hnh, tm hiu ti liu. Tuy nhin nu c kin thc c bn v lp trnh bn s tip thu ni dung nhanh hn Khng c iPhone c hc lp trnh iPhone c khng? Khng c iPhone th bn vn c th hc lp trnh iPhone bnh thng, ng dng bn xy dng c c th chy th trn cng c gi lp iPhone m Apple cung cp km theo Xcode l iOS Simulator, tuy nhin iOS Simulator vn cn mt s hn ch m ch c iPhone tht mi c nh camera. Tuy nhin bn c th tm mua iPhone c chy iOS 6 hc lp trnh, gi tng i r. Khng c my Mac c th lp trnh iPhone hay khng? Bn c th lp trnh iPhone m khng cn ti my Mac. Bn c th xem Chng 1, phn 1.1. S dng h iu hnh Windows, lm sao ci c Xcode lp trnh iPhone? Bn c th ci Mac OS ln my o ri ci t Xcode bnh thng. Nh vy bn c th lp trnh iPhone trn Window ri. Bn c th xem thm ti Chng 1, phn 1.1. Ngn ng no c dng vit ng dng iPhone? ng dng iPhone thng c vit bng cc ngn ng nh Objective-C, C++, C hoc Java tuy nhin ngn ng Objective-C vn l ngn ng chnh c s dng nhiu nht.
S dng cng c g vit ng dng iPhone? vit ng dng iPhone, bn s dng cng c Xcode do chnh Apple cung cp. ng dng ny c ti min ph t App Store ca Mac OS. Bn xem thm ti Chng 1, phn 1.2. Mun hc v lp trnh iOS phi bt u t u? Mun hc lp trnh iOS, trc ht bn phi chun b c h iu hnh Mac OS, phn mm Xcode (xem Chng 1). Tip theo bn tm hiu cch s dng Xcode (xem Chng 2), tm hiu Objective-C (xem Chng 3). Sau khi chun b xong, bn tm hiu cc i tng trong Xcode (xem Chng 4, Chng 5) v tm hiu thm cc ti liu, video, website c cung cp Ph lc. Sau khi tri qua qu trnh ny, bn c c lng kin thc tng i tip tc tm hiu su hn. Nn c ti liu g khi bt u tm hiu lp trnh iOS? Khi bt u tm hiu lp trnh iOS, bn nn c trc ti liu do Apple cung cp ti https://developer.apple.com/library/ios/documentation/ nm c mt s kin thc c bn. Ngoi ra bn cng nn tm hiu cc ti liu, video, website c cung cp trong phn Ph Lc. Xcode l g? Xcode l phn mm Apple cung cp dng lp trnh ng dng iPhone. Bn xem ti Chng 1, phn 1.2. Objective-C l g? Objective-C l ngn ng c pht trin da trn ngn ng C. Ngn ng Objective-C c s dng l ngn ng chnh trong lp trnh ng dng iPhone. Bn xem thm ti Chng 3. C th s dng Xcode 5 vit ng dng cho cc phin bn iOS c hay khng?
408
Bn vn c th s dng Xcode 5 vit ng dng cho cc phin bn iOS c. Xem ti Chng 8, phn 8.1. Lm sao ng dng c th va chy c iOS 7 va chy c iOS c? Xcode 5 h tr c ch t ng hin th giao din theo phin bn iOS cho ng dng, nu ng dng chy trn iOS 7 s c giao din khc, chy trn iOS 6 s c giao din khc. Xem ti Chng 8, phn 8.2. Lm th no a ng dng mi lp trnh ln iPhone? Nu iPhone ca bn jailbreak, bn c th a ng dng ln iPhone dng JaillCoder, xem Chng 7. Nu iPhone cha jailbreak, bn cn c ti khon Apple Developer, xem thm ti: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistribution Guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012582-CH1-SW1 . Lm sao chia s ng dng mi lp trnh cho ngi khc? Nu ngi bn mun chia s ng dng c iPhone jailbreak, bn c th dng JailCoder a ng dng ln iPhone. Nu bn c ti khon Developer ID bn c th chuyn ng dng sang dng .ipa ri chia s. Lm th no a ng dng ln App Store? a ng dng ln App Store, bn cn c mt ti khon Apple Developer vi mc ph 99$/nm. Bn c th xem thm hng dn ti https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistribution Guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012582-CH1-SW1 Developer ID l g? C nhng loi Developer ID no? Apple Developer ID l ti khon dnh cho cc lp trnh vin ca Apple. Vi ti khon ny, bn c th a ng dng ln App Store, chy ng dng ln iPhone m khng cn JailCoder, hn na bn s c cung cp trc cc thng tin t Apple nh cc bn
409
th nghim Xcode, th nghim iOS mi Apple Developer ID dnh cho iOS c 3 loi chnh: iOS Developer Program dnh cho cc lp trnh vin vi 99$/nm, iOS Developer Enterprise Program dnh cho cc doanh nghip vi 299$/nm, iOS Developer University Program dnh cho cc trng a lp trnh iOS vo ging dy v c min ph. Bn c th tm hiu thm ti https://developer.apple.com/programs/
410
PH LC Source Km Theo Ti Liu https://www.mediafire.com/folder/pulecvu1ic48t/ Sch Bn Nn c 1. Apress, Learn Objective-C on the Mac For OS X and iOS 2nd. 2. Aaron Hillegass , Objective-C Programming: The Big Nerd Ranch Guide. 3. Apress, iPhone and iPad Apps for Absolute Beginners 3rd. 4. OReilly , Head First iPhone & iPad Development. 5. OReilly , iPhone App Development: The missing manual. 6. Neal Goldstein & Dave Wilson, iOS 6 Application Development For Dummies. 7. Neal Goldstein , iPhone Application Development For Dummies.
Video Bn Nn Xem 1. http://www.youtube.com/user/MilmersXcode 2. http://www.youtube.com/playlist?list=PLA138EFCAFA592E7E 3. http://www.youtube.com/user/ChupaMobile 4. http://www.youtube.com/user/CarnegieMellonU?feature=watch 5. http://www.youtube.com/user/CodeWithChris 6. http://www.youtube.com/user/iThanhVN 7. https://itunes.apple.com/vn/course/developing-ios-7-apps-for/id733644550 8. https://itunes.apple.com/vn/course/iphone-applicationprogramming/id727587146
2. http://www.appcoda.com/tutorials/ 3. https://www.udemy.com/blog/how-to-build-an-iphone-app-from-scratch-fornon-technical-people/ 4. http://www.idev101.com/learn/ 5. http://www.mobioneer.com/6-iphone-app-development-tutorial.html/ 6. http://nhatnghe.com/forum/forumdisplay.php?f=154 7. http://codewithchris.com/ 8. http://www.chupamobile.com/tutorial-ios 9. http://www.iphoneapptuts.com/ 10. http://www.facebook.com/LapTrinhiOS 11. http://iosclass.blogspot.in/
412