Авторизация

OpenID



Напомнить пароль
Регистрация
-->

Яблочный раздел сайта, или всё об Apple и Mac OS XСоздание первого приложения для iPhone (продолжение)

Начало тут

Шорткаты в Xcode

Ред­кий раз­ра­бот­чик не лю­бит поль­зо­вать­ся шорт­ка­та­ми, так что сра­зу изу­чим па­роч­ку, и, глав­ное, пой­мем, где их ме­нять.
На­чи­на­ю­ще­му про­грам­ми­сту по­сто­ян­но при­хо­дит­ся об­ра­щать­ся к до­ку­мен­та­ции, по­это­му непло­хо за­пом­нить три шорт­ка­та. Двой­ной щел­чок по сло­ву в ко­де с за­жа­той кла­ви­шей Alt от­кро­ет быст­рую под­сказ­ку. Ес­ли ее недо­ста­точ­но, в пра­вом верх­нем уг­лу под­сказ­ки есть икон­ка с книж­кой. На­жми­те ее, что­бы от­крыть пол­но­цен­ную до­ку­мен­та­цию. Что­бы от­крыть до­ку­мен­та­цию сра­зу, щелк­ни­те по ин­те­ре­су­ю­ще­му вас сло­ву два ра­за с за­жа­ты­ми кла­ви­ша­ми Alt+Cmd. По­про­буй­те эти шорт­ка­ты на сло­ве UILabel, ко­то­рое мы толь­ко что пи­са­ли в HelloWorldViewController.h.
Что­бы про­сто от­крыть до­ку­мен­та­цию, мож­но на­жать Cmd+Alt+Shift+/. Чу­до­вищ­но неудоб­но, но так уж сде­ла­но.
Что­бы пе­ре­хо­дить меж­ду за­го­ло­воч­ным фай­лом клас­са (.h) и его те­лом (.m) мож­но ис­поль­зо­вать шорт­кат Cmd+Alt+вверх. Что­бы вер­нуть­ся в преды­ду­щее ме­сто, где мы что-​то де­ла­ли (в дру­гом клас­се, или дру­гом ме­сте дан­но­го клас­са) мож­но на­жать Cmd+Alt+вле­во. Опять пе­рей­ти — Cmd+Alt+впра­во.
Осталь­ные шорт­ка­ты изу­чай­те са­ми, для это­го от­крой­те Xcode→Preferences, там вклад­ку Key Bindings. По­ме­нять шорт­ка­ты мож­но там же, для это­го вы­бе­ри­те в таб­ли­це нуж­ную вам стро­ку и два­жды ткни­те в нее, но не в на­ча­ле, а в столб­це Key. В по­явив­шем­ся по­ле вво­да про­сто на­жми­те нуж­ное со­че­та­ние кла­виш.
Ес­ли вы хо­ти­те уда­лить шорт­кат, опять два­жды ткни­те в нуж­ную стро­ку и на­жми­те «ми­нус» в пра­вой ча­сти по­ля вво­да.

Связываем поле с надписью

По­ра вер­нуть­ся к на­ше­му при­ло­же­нию. Со­хра­ни­те из­ме­не­ния в HelloWorldViewController.h (Cmd+S) и сно­ва от­крой­те HelloWorldViewController.​xib в Interface Builder-​е.
Вы­бе­ри­те File’s Owner и на­жми­те Cmd+2 — от­кро­ет­ся вто­рая вклад­ка ин­спек­то­ра. В ней есть раз­дел Outlets, а там в од­ной из строк сле­ва на­пи­са­но «label». Спра­ва в этой же стро­ке — пу­стой кру­жок. За­жав ле­вую кноп­ку мы­ши, по­тя­ни­те кру­жок к на­ше­му label-​у. Ко­гда мыш­ка ока­жет­ся над label-​ом, от­пу­сти­те кла­ви­шу мы­ши.



Те­перь на­ше по­ле ти­па UILabel со­по­став­ле­но с лэй­б­лом в ин­тер­фейс бил­де­ре — спра­ва от label в раз­де­ле Outlets на­пи­са­но «Label (Hello World!)». Interface Builder поз­во­ля­ет за­дать на­чаль­ное со­сто­я­ние эле­мен­та ин­тер­фей­са, а в ко­де мы мо­жем даль­ше ме­нять его ат­ри­бу­ты по сво­е­му усмот­ре­нию.
Ес­ли мы ко­гда-​ни­будь за­хо­тим разо­рвать связь на­ше­го по­ля с этим label-​ом, мы ткнем в ма­лень­кий кре­стик сле­ва от «Label (Hello World!)». Но сей­час про­сто со­хра­ним xib (Cmd+S) и вер­нем­ся в Xcode.

Меняем текст надписи

Вы­бе­ри­те сле­ва файл HelloWorldViewController.m и най­ди­те за­ком­мен­ти­ро­ван­ный ме­тод

-(void)viewDidLoad {

Рас­ком­мен­ти­руй­те его, уда­лив /* и */ до и по­сле ме­то­да, и по­сле

[super viewDidLoad];

на­пи­ши­те

label.text = @"Hi again!";

Дан­ный ме­тод вы­пол­ня­ет­ся по­сле ини­ци­а­ли­за­ции view, а впи­сан­ная на­ми стро­ка ме­ня­ет текст по­ля label, ко­то­рое, как мы пом­ним, и есть на­ша над­пись. За­пу­сти­те при­ло­же­ние. Ес­ли мы все сде­ла­ли пра­виль­но, мы уви­дим сле­ду­ю­щую кар­ти­ну:



Как ви­ди­те, все очень про­сто. Нам по­на­до­би­лось на­пи­сать все­го 2 стро­ки ко­да!

Добавляем кнопку

На­по­сле­док сде­ла­ем на­ше при­ло­же­ние еще чуть слож­нее. До­ба­вим кноп­ку, по на­жа­тии ко­то­рой текст «Hello World!» бу­дет ме­нять­ся на «Hi again!», а кноп­ка бу­дет ис­че­зать.
От­крой­те класс HelloWorldViewController.h, объ­яви­те по­ле для кноп­ки:

IBOutlet UIButton *button;

и ме­тод, ко­то­рый бу­дет вы­зы­вать­ся при на­жа­тии на кноп­ку:

-(IBAction)buttonPressed:(id)sender;

В ито­ге дож­но по­лу­чит­ся:

#import <UIKit/UIKit.h>
 
@interface HelloWorldViewController : UIViewController {
IBOutlet UILabel *label;
IBOutlet UIButton *button;
}
 
- (IBAction)buttonPressed:(id)sender;
 
@end


Сло­во IBAction нуж­да­ет­ся в ком­мен­та­рии. У неко­то­рых эле­мен­тов ин­тер­фей­са есть стан­дарт­ные со­бы­тия, при на­ступ­ле­нии ко­то­рых мо­жет быть вы­зван ка­кой-​ни­будь ме­тод (в тер­ми­нах Objective-​C — ко­му-​то по­сла­но ка­кое-​ни­будь со­об­ще­ние). Тот, ко­му по­сла­но это со­об­ще­ние, на­зы­ва­ет­ся де­ле­га­том (вы обя­за­тель­но столк­не­тесь ко­гда-​ни­будь с этим тер­ми­ном, так что луч­ше сра­зу его за­пом­нить), а ме­тод, ко­то­рый бу­дет вы­зван — дей­стви­ем. Клю­че­вое сло­во IBAction по­мо­га­ет Interface Builder-​у по­нять, что этот ме­тод мож­но свя­зать с со­бы­ти­ем ка­ко­го-​ни­будь эле­мен­та ин­тер­фей­са. Ес­ли бы с со­бы­ти­ем мож­но бы­ло свя­зы­вать лю­бой ме­тод, без уточ­не­ний, то их бы­ло бы до­ста­точ­но мно­го, и в ин­тер­фейс-​бил­де­ре ста­ло бы не очень удоб­но ра­бо­тать. А так — в са­мый раз.
Со­хра­ни­те из­ме­не­ния в HelloWorldViewController.h и еще раз от­крой­те HelloWorldViewController.​xib в Interface Builder-​е. От­крой­те Library (Cmd+Shift+L), най­ди­те там Round Rect Button и пе­ре­та­щи­те в наш view. Ткни­те в нее два ра­за и вве­ди­те текст, ко­то­рый бу­дет на­пи­сан на кноп­ке: «change text».
Кноп­ка есть, на­до толь­ко свя­зать ее с по­лем, и сде­лать так, что­бы при на­жа­тии на нее вы­зы­вал­ся объ­яв­лен­ный на­ми ме­тод. Как свя­зать с по­лем вы уже зна­е­те — вы­бе­ри­те File’s Owner, на­жми­те Cmd+2, и пе­ре­та­щи­те кру­жок спра­ва от над­пи­си button на кноп­ку. Го­то­во!
Связь с ме­то­дом про­ис­хо­дит по­чти так же: вы­бе­ри­те са­му кноп­ку и на­жми­те Cmd+2. В спис­ке events най­ди­те Touch Up Inside. Это со­бы­тие вы­зы­ва­ет­ся в мо­мент под­ни­ма­ния паль­ца, ко­то­рым ткну­ли в кноп­ку (имен­но в этот мо­мент тра­ди­ци­он­но про­ис­хо­дит сра­ба­ты­ва­ние на­жа­тия). Точ­но так же, как и рань­ше, та­щи­те кру­жок, рас­по­ло­жен­ный спра­ва от это­го со­бы­тия, к объ­ек­ту First Responder. По­явит­ся неболь­шой спи­сок, в ко­то­ром вы­бе­ри­те buttonPressed. Со­хра­ни­те файл.
Оста­лось со­всем немно­го. От­крой­те HelloWorldViewController.m и, на­при­мер, в ко­нец фай­ла (но до @end) на­пи­ши­те:

- (IBAction)buttonPressed:(id)sender {
label.text = @"Hi again!";
button.hidden = YES;
}

И, «для по­ряд­ку», со­три­те ме­тод viewDidLoad. Что­бы не му­со­рить.
На­пи­сан­ный на­ми про­стой ме­тод ме­ня­ет текст над­пи­си (это мы уже уме­ем) и уби­ра­ет кноп­ку, став­шую те­перь ненуж­ной. Про­ве­рим? За­пу­сти­те при­ло­же­ние и на­сла­ждай­тесь ре­зуль­та­том. Как ви­ди­те, все весь­ма про­сто!
Про­ект, ко­то­рый дол­жен был у вас по­лу­чить­ся, на вся­кий слу­чай при­ло­жен к ста­тье.
Заключение

Все, что мы де­ла­ли, бы­ло очень про­сто и быст­ро, не прав­да ли? Но не сто­ит обо­льщать­ся — лю­бое се­рьез­ное при­ло­же­ние тре­бу­ет весь­ма ос­но­ва­тель­ных вло­же­ний вре­ме­ни и сил, осо­бен­но для на­чи­на­ю­щих iPhone-​раз­ра­бот­чи­ков. К сча­стью, iPhone SDK — весь­ма со­вре­мен­ная и удоб­ная биб­лио­те­ка, предо­став­ля­ю­щая мас­су воз­мож­но­стей и удоб­ных ре­ше­ний, и снаб­жен­ная непло­хой до­ку­мен­та­ци­ей (хо­тя неко­то­рые мо­мен­ты мог­ли бы быть рас­кры­ты по­по­дроб­нее).
  • +1
  • jack291
  • 15 марта 2011, 16:49

Комментарии (0)

RSS свернуть / развернуть

комментировать

Ваше имя
Ваш e-mail (будет скрыто и используется только для отправки ответов на ваш комментарий)
Вы — гость, и вам запрещено использовать HTML-теги.
 
Введите цифры и буквы:



Блоги, Яблочный раздел сайта, или всё об Apple и Mac OS X, Создание первого приложения для iPhone (продолжение)