Objective-CãšiOSéçºãåŠã¶éçšã§ããããã¯ãã©ã®ããã«æ©èœããããç解ã§ããŸããã§ããã ã¡ãœããã«ãã©ã¡ãŒã¿ãŒãšããŠæž¡ãããšãã§ããã®ã¯æ··ä¹±ããŠããŸããã ãããã¯ã ãã§ãªããã¢ããªã±ãŒã·ã§ã³éçºããã»ã¹ãèæ
®ããããããéåžžã«èå³æ·±ããšæã
ããèšäºã«åºäŒããŸã
ã ã æçš¿ã¯xCode 7.3.1ã«é©åããŠããŸãã
ãŸããã
ãããã¯ã¯C / Objective-Cãžã®éåžžã«åŒ·åãªè¿œå æ©èœã§ããããã«ãããã³ãŒãã®æçãåå¥ã®ãŠãããã«ãã©ããããããªããžã§ã¯ããšããŠæäœã§ããŸãã ããå€ãã®APIãiOSã§ãããã¯ã䜿çšããå¿
èŠããããããããããç解ããããšã¯éåžžã«éèŠã§ãã ãã ãããããã®æ§æãšããã€ãã®åŸ®åŠãªåŽé¢ã¯ãåå¿è
ã«ãšã£ãŠãã°ãã°æ··ä¹±ãæããŸãã ããããæããããšã¯ãããŸãã-ãã®ã¬ãã¹ã³ã¯éåžžã«åœ¹ç«ã¡ãŸãã
ãã®ãã¥ãŒããªã¢ã«ã®2ã€ã®ããŒãã§ã¯ããiOS Dinerããšããå°ããªiOSãããžã§ã¯ããäœæããŸãã ã¢ããªã±ãŒã·ã§ã³èªäœã¯ç°¡åã§ãããŠãŒã¶ãŒã¯ã¡ãã¥ãŒããæçãéžæããŠããŸãã§æŒé£ãé£ã¹ãŠãããã®ããã«æ³šæãäœæããŸãã 泚æïŒåµé ã®éçšã§ã空è
¹æããšã¹ã«ã¬ãŒãããŸãïŒ
æåã®éšåã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®UIãéçºããåæã«
ã¹ããŒãªãŒããŒã ïŒæåéã-ã¹ããŒãªãŒããŒã-çŽPerãïŒã確èªããŸããããã«ã¯ãJSON圢åŒã§ã¡ãã¥ãŒãèªã¿èŸŒãããã®WebãµãŒãã¹ã®äœæãšäœ¿çšã«é¢ããçãã¡ã¢ãå«ãŸããŸãã
ã泚æ ã¹ããŒãªãŒããŒããš
ã€ã³ã¿ãŒãã§ã€ã¹ãã«ããŒãæ¢ã«åŸæãªå Žåã¯ãæåã®éšåãã¹ãããããŠããããã¯ã®äœ¿çšãéå§
ãã2çªç®ã®éšåã«çŽæ¥é²ãã§ãã ããã ãã®ããŒãã§ã¯ã
Storyboardãš
Interface Builderã®ã¿ã«çŠç¹ãåœãŠãŸãã
2çªç®ã®éšåã§ã¯ãã¢ããªã±ãŒã·ã§ã³ããžãã¯ã®ããã°ã©ãã³ã°ãéåæããŒã¿åŠçãããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãå€ãã®æšæºAPIã®ä»£æ¿ãšããŠã®äœ¿çšãªã©ããããã¯ã®å
æ¬çãªäœ¿çšæ¹æ³ã瀺ããŸãã
ã¯ããã«
Xcodeãéããæ°ãããããžã§ã¯ããäœæããŸãã
ãããžã§ã¯ãã®ååã§ããiOSDinerãã瀺ããŸãã
ãããžã§ã¯ããå®è¡ããŸãã ãã¡ããããŸã 空ã§ãããã·ãã¥ã¬ãŒã¿ã«ã¯ç©ºçœã®ç»é¢ã衚瀺ãããŸãã
Deployment Infoã®ãããžã§ã¯ãèšå®ã§ã
Portraitããã¯ã¹ã®ãã§ãã¯ãå€ããŸãã
æåã«è¡ãããšã¯ããã¬ãŒã³ããŒã·ã§ã³ã®ã«ã¹ã¿ãã€ãºã§ãã ãããè¡ãã«ã¯ãå°ããªã°ã©ãã£ãã¯ãå¿
èŠã§ãã
ãã¡ãããããŠã³ããŒãã§ããŸãã ããããããžã§ã¯ããªãœãŒã¹ã«è¿œå ããå¿
èŠããããŸãã
æ£çŽãªãšãããxCodeããããžã§ã¯ããšãã¡ã€ã«ã·ã¹ãã ã§äžèŽãããã¡ã€ã«ãåŠçããæ¹æ³ã奜ãã§ã¯ãªãã£ãã®ã§ãéåžžããã¡ã€ã«ã·ã¹ãã ã«ãªãœãŒã¹ãæåã§è¿œå ããŸãã
Finderã§ãããžã§ã¯ããã©ã«ããŒãéãããã®äžã«ããªãœãŒã¹ããã©ã«ããŒãäœæããŸãã ãã®äžã«ããImagesããã©ã«ããŒãäœæããŸãã
以äžã®ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããã«ãããŠã³ããŒãããZIPãã¡ã€ã«ããç»åãImagesãã©ã«ããŒã«ã³ããŒããXcodeã§IOSDinerãã©ã«ããŒã«Resourcesãã©ã«ããŒããã©ãã°ããŸãã
ããã§ãXcodeã®Resourcesãã©ã«ããŒãèŠãããšãã§ããŸãããã®ãã©ã«ããŒã«ã¯ããã¡ã€ã«ã·ã¹ãã ãšåãããã«ãããŠã³ããŒããããç»åãå«ããµããã©ã«ããŒImagesããããŸãã
ç»åãè¿œå ãã
Main.storyboardãéã
ãŸã ã
ã
ã³ã³ãããŒã©ãŒã·ãŒã³ã®è¡šç€º ããšããååã®2çªç®ã®åã衚瀺ãããªãå Žåã¯ãäžã®
[å±é ]ãã¿ã³ãã¯ãªãã¯ããŸãã
ãããã£ãŠãç»åã
StoryImageã«UIImageViewsããã³
UIButtonsãšããŠ
è¿œå ã
ãŸã ã ç°¡åã«ããã«ã¯ã[
ãŠãŒãã£ãªãã£]ãµã€ãããŒãéãã[
ã¡ãã£ã¢ã©ã€ãã©ãª]ãéžæããŸãã
ããã«ããããžã§ã¯ãã«è¿œå ããã以åã®ãã¹ãŠã®ç»åã衚瀺ãããŸãã 確ãã«ãååçã«ã¯ååã®æ«å°Ÿã«ã@ 2xããä»ããç¬èªã®ã³ããŒãããããšã«æ°ã¥ããŸããã RetinaããŒãžã§ã³ã«äœ¿çšãããŸãã
ç§ãã¡ã¯ãã€ãã®çµµã ãã«èå³ããããŸãã ã¹ããŒã¹ããŒãã¯ãªãã¯ããŠæŒãããšã§ãç»åã®ããŒãžã§ã³ã確èªã§ããŸãã 以äžã«ç€ºãããã«ããbg_wall.pngããã«ãŒããã¥ãŒã«ãã©ãã°ããŸãã ç»åãæ£ããèšå®ãããŠãããã©ããããããªãå Žåã¯ããµã€ãºã€ã³ã¹ãã¯ã¿ãŒã«åãæ¿ããŠX座æšãšY座æšãå€æŽã§ããŸãã
次ã®ç»åã§ãåãããšãè¡ããŸãã
- person.png
- sign_theiOSdiner.png
- chalkboard.png
- bg_counter.png
- total_field.png
- food_box.png
ã泚æ Cmdãš
=ããŒãåæã«æŒãããšã«ããã
ç»åãã¥ãŒãç»åã®æ£ç¢ºãªãµã€ãº
ã«åãããããšãã§ããŸãã ãã¹ãŠã®åçãé©åãªå Žæã«é
眮ãããããããžã§ã¯ããå®è¡ããŸãã
ããïŒ ã¢ããªã®ããã«ïŒ 次ã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããŒããè¿œå ããŸãã [
ãŠãŒãã£ãªã㣠]ããã«ã§ã[
ãªããžã§ã¯ãã©ã€ãã©ãª ]ã«åãæ¿ããŸãã
ãã¥ãŒã®äžå€®ãã¢ãã¿ãŒã®äžã«
ãã¿ã³ããã©ãã°ããŸãã æ°ããè¿œå ããããã¿ã³ãããã«ã¯ãªãã¯ããŠãã-1ããå
¥åããŸãã
äžžãé·æ¹åœ¢ãã¿ã³ãªãªãžãã«ã¯
Round Rect Buttonã䜿çšããŸããããããã¯xCode 7.3.1ã«ã¯ãããŸããã
Stack Overflowã«ã¯ããããã®äœ¿çšæ¹æ³ã«é¢ãããœãªã¥ãŒã·ã§ã³ããããŸãã
ãã¿ã³ã匷調衚瀺ãããŠããããšã確èªããŸãã
å±æ§ã€ã³ã¹ãã¯ã¿ãŒã§ ã
Backgroundå±æ§ããbutton_silver.pngãã«èšå®ããŸããAlt
ããŒãæŒãã
ãŸãŸ ã-1ãã¿ã³ãå³ã«ãã©ãã°ããŸãã ããã«ããããªããžã§ã¯ãã®ã³ããŒãäœæãããŸãã ããã¹ãã+1ã«å€æŽããŸãã
å¥ã®ãã¿ã³ãã¢ãã¿ãŒã®å·Šç«¯ã«ãã©ãã°ããŸãã
Button Typeã
Customã«èšå®ãããã¿ã³ã®ã¿ã€ãã«ãåé€ããŠã
ã¡ãã£ã¢ã©ã€ãã©ãªãŒãããbutton_arrow_left.pngãããã©ãã°ããŸã
ãã®ãã¿ã³ãã³ããŒããŠãèæ¯ç»åããbutton_arrow.pngãã«å€æŽããŸã
ãããŠæåŸã®ãã¿ã³ãæ®ã£ãã ããŒãã®äžã«çœ®ããèæ¯ç»åããtotal_field.pngãã«èšå®ããŸãã ãããžã§ã¯ããå®è¡ããŸãã
ããªãããã§ããã 次ã«è¿œå ããã®ã¯ãã©ãã«ãšãã¬ãã¥ãŒãŠã£ã³ããŠã§ãã
ãªããžã§ã¯ãã©ã€ãã©ãªã«å床移åããŸãã
UILabelãããŒãã«ãã©ãã°ããããŒãã«åãããŠåŒã䌞ã°ããŸãã
Atrributes Inspectorã§ã Linesã0
ã«èšå®ãïŒããã«ããã©ãã«ãè€æ°è¡ã«ãªããŸãïŒã
Text Colorãçœã«ã
FontãMarker Felt 17.0ã«å€æŽããŸãã éåžžãMarker Feltã®äœ¿çšã¯ç¯çœªã§ãããšèããŠããŸãããç§ãã¡ã®å Žåã¯éåžžã«é©ããŠããŸãã
UIImageViewãã¢ãã¿ãŒã«ãã©ãã°ã¢ã³ãããããããŸãã
å±æ§ã€ã³ã¹ãã¯ã¿ãŒã§ã ã¢ãŒããã¢ã¹ãã¯ããã£ããã«å€æŽã
ãŸã ã
å¥ã®
UILabelãå³äžã®ãã¬ãŒãã«ãã©ãã°ããŸãã ãã¬ãŒãã®ç°è²ã®é åã®ãµã€ãºã«ããŠã
AlignmentãCenterã«èšå®ããŸãã
IBOutletsããã³IBActionsãã€ã³ã¹ããŒã«ãã
次ã«ãäœæãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšã³ãŒãã®éã®é¢ä¿ã確ç«ããå¿
èŠããããŸãã ããã«ã¯ã
IBOutletsãš
IBActionsãå¿
èŠã§ãã IBã¯
Interface Builderã®ç¥ã§ãxCodeã§UIãäœæããããã«äœ¿çšãããŸãã
- IBOutlet㯠ãåºæ¬çã«ãUIèŠçŽ ïŒãã¿ã³ãŸãã¯ã©ãã«ïŒãšã³ãŒãå
ã®ãªã³ã¯ãšã®é¢ä¿ã§ãã
- IBActionã¯ãéçºãããã€ã³ã¿ãŒãã§ã€ã¹ã®ã€ãã³ãïŒãã¿ã³ã¯ãªãã¯ãªã©ïŒã«æ¥ç¶ã§ããã³ãŒãå
ã®ã¢ã¯ã·ã§ã³ïŒãŸãã¯ãã䟿å©ãªã¡ãœããïŒã§ãã
IBOutletsãš
IBActionsãä»ããŠUIèŠçŽ ãæ¥ç¶ããããã®ã³ãŒããäœæããŸãããã
[
ãŠãŒãã£ãªã㣠]ã¿ããéããŠã
ã¢ã·ã¹ã¿ã³ããšãã£ã¿ãéããŸãã æ§ææ¹æ³ã«ãã£ãŠã¯ãã¹ã¯ãªãŒã³ã·ã§ãããã¹ã¯ãªãŒã³ã·ã§ãããšåãã«èŠããªãå ŽåããããŸãã
ã¢ã·ã¹ã¿ã³ããšãã£ã¿ãŒã®è¡šç€ºãå€æŽããå Žåã¯ããã®ã¡ãã¥ãŒãèŠãŠãã ããã
ãã¿ã³ããå§ããŸãããã -1ãã¿ã³ãéžæãã
CtrlããŒãæŒããªããã³ãŒãã«ãã©ãã°ããŸãã ããã«ããããã¿ã³ã®
IBOutletã®äœæãèªååãããŸãã
ãã®ãªããžã§ã¯ãã«å¿
èŠãªã®ã¯ãååãä»ããããšã ãã§ãã xCodeã§ã¯ãªãŒãã³ã³ããªãŒãã«ãããã¹ãŠã®èŠçŽ ãç°¡åã«èŠã€ããããšãã§ããããããibããã¬ãã£ãã¯ã¹ã奜ãã§ãã ãã®ãªããžã§ã¯ãã«ãibRemoveItemButtonããšããååãä»ãã[
æ¥ç¶ ]ãã¯ãªãã¯ã
ãŸã ã
æ®ãã®ãã¿ã³ã«ã€ããŠãåãããšãè¡ããŸãã
åãæ¹æ³ã§ã©ãã«ãèšå®ããŸãã
ããã§ã
ViewController.mã¯æ¬¡ã®ããã«ãªããŸãã
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIButton *ibRemoveItemButton; @property (weak, nonatomic) IBOutlet UIButton *ibAddItemButton; @property (weak, nonatomic) IBOutlet UIButton *ibPreviousItemButton; @property (weak, nonatomic) IBOutlet UIButton *ibNextItemButton; @property (weak, nonatomic) IBOutlet UIButton *ibTotalOrderButton; @property (weak, nonatomic) IBOutlet UILabel *ibChalkboardLabel; @property (weak, nonatomic) IBOutlet UIImageView *ibCurrentItemImageView; @property (weak, nonatomic) IBOutlet UILabel *ibCurrentItemLabel; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
ããã§ã
UIButtonsã«
IBActionsãè¿œå ãã
å¿
èŠããã
ãŸã ã ãããã¯ãç¹å®ã®ã€ãã³ãïŒTouch Up InsideãTouch Up OutsideãTouch Cancelãªã©ïŒã«å¿çããŠåŒã³åºãããã¡ãœããã§ãã ãã¿ã³ã®å Žåãæãäžè¬çã«äœ¿çšãããå
éšã¿ããã¢ããã
ãã¿ã³ã-1ããéžæããŸãã å床ã
CtrlããŒã䜿çšããŠ
ViewController.mã«ãã©ãã°ã
ãŸã ã ããã¯
IBActionã§ãããããibaãã¬ãã£ãã¯ã¹ã䜿çšããŸãã ãã¹ãŠã®ãã¿ã³ã«ã€ããŠç¹°ãè¿ããŸãã
WebãµãŒãã¹ãã€ã³ã¹ããŒã«ãã
ã³ãŒããéå§ããåã«ãWebãµãŒãã¹ãæ§æããŸãã ããã«ã€ããŠã¯ãã§ã«ããã€ãã®ã¬ãã¹ã³ããããŸãã®ã§ããã¹ãŠã詳ãã説æããã€ããã¯ãããŸããïŒ
iOSã¢ããªçšã®ã·ã³ãã«ãªPHP / MySQL WebãµãŒãã¹ã® æžãæ¹ãš
WebãµãŒãã¹ã䜿çšããiOSã¢ããªã®æžãæ¹ ïŒã
以äžã®ã³ãŒãã¯ãWebãµãŒãã¹ã®PHPã³ãŒããã©ã®ããã«ãªããã瀺ããŠããŸãã
<?php function getStatusCodeMessage($status) { $codes = Array( 100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => '(Unused)', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported' ); return (isset($codes[$status])) ? $codes[$status] : ''; }
ãã®WebãµãŒãã¹ã¯ãJSONé
åãè¿ãéåžžã«åçŽãªPHPã¹ã¯ãªããã§ãã é
åã«ã¯ããããã
é£æ³é
å ïŒPHPïŒããŸãã¯
ãã£ã¯ã·ã§ã㪠ïŒObjective-CïŒãå«ãŸããã¢ã€ãã ã®ååãäŸ¡æ Œãç»ååãå«ãŸããŸãã äžèšã®ã³ãŒãã§æ³šæãã¹ãããšã¯ãline
sleep(5);
ã
äœéã®WebãµãŒãã¹ãã·ãã¥ã¬ãŒãããŠãéåææäœã§ãããã¯ãã©ã®ããã«åœ¹ç«ã€ãããããã瀺ãããã«äœ¿çšããŸãã
ãã®ã³ãŒããæ¡åŒµå.phpã®ãã¡ã€ã«ã«ã³ããŒããŠãã¹ãã£ã³ã°ã«é
眮ããããåã«
mineã䜿çšããŸãã
次ã«ããããš
ã¬ãã¹ã³ã®ãã®éšåã®ãã©ããã¯ã
ããããããŠã³ããŒãã§ã
ãŸã ã ãŸãããããã¯ãšã¯é¢ä¿ã®ãªãããããçš®é¡ã®ãã®ããããããããŸããã ãããã
ãã¥ãŒãš
WebãµãŒãã¹ãã€ã³ã¹ããŒã«ããããã³ãŒãã£ã³ã°ã«é²ã¿ããããã¯ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãå®å
šã«æ©èœãããããšãã§ããŸãã