Пишем свою первую программу для iPhone
Ну что-же, пришло время написать нам свою первую программу для нашего iPhone. Если вы еще не поставили себе XCode + iPhone SDK – то вам сюда. И так, XCode у нас стоит и настроен, начнем?
Для начала научимся самому простому. Создадим программу, в которой будет одно текстовое поле в которое будем записывать наше имя и одну кнопку, по нажатию на которую наше имя будет записываться в приветствие. Выглядеть наша первая программа будет так:
Поехали!
Создаем наш первый и надеюсь не последний проект:
Далее нас спросит какой тип приложения создавать. Слева в панели выбираем iPhone OS -> Application а в центральном окне выбираем тип проекта View-based Application. Назовем нашу первую программу, допустим, FirstApp
В результате у нас создается проект с уже созданным контроллером (первым окном нашей программы)
Главное окно проекта выглядит вот так:
Xcode создал для нас первый контроллер, это два файла c названиями FirstAppViewController.h и FirstAppViewController.m
Файл FirstAppViewController.h выступает как-бы заголовком (оттуда и расширение файла .h от слова header) В нем мы будем оглашать переменные и методы которыми будем пользоваться в главном файле FirstAppViewController.m
И так, открываем файл FirstAppViewController.h и создадим два указателя:
IBOutlet UILabel *username;
IBOutlet UITextField *nikField;
Первая переменная username – это текстовая метка, в которую мы будем записывать наше имя. nikField – это текстовое поле, откуда мы будем читать наше имя.
Записывать это нужно в блоке @interface firstAppViewController : UIViewController { }
Еще создадим метод, который будем вызывать при нажатии на кнопку, для того чтобы представиться. Назовем метод setNik:
– (IBAction)setNik;
В итоге, наш файл FirstAppViewController.h должен выглядеть так:
#import <UIKit/UIKit.h>
@interface firstAppViewController : UIViewController {
IBOutlet UILabel *username;
IBOutlet UITextField *nikField;
}
- (IBAction)setNik;
@end
Теперь, перейдем в файл FirstAppViewController.m
Добавим сюда наш метод setNik. Писать нужно после строчки @implementation firstAppViewController
- (IBAction)setNik{
username.text = nikField.text;
}
Тут мы прописываем, что при выполнении этого метода в текстовую метку username будет записан текст из поля nikField
Еще нам нужно освободить память от этих указателей после того как мы их используем. Делается это в методе под названием dealoc
- (void)dealloc {
[username release];
[nikField release];
[super dealloc];
}
Просто добавляем все указатели, которые использовали, вот в таком формате: [username release];
Теперь, открываем файл интерфейса FirstAppViewController.xib Он запускается в редакторе интерфейсов Interface Builder.
Из библиотеки компонентов перетаскиваем нужные нам компоненты в окно нашей программы и расставляем так как удобно. Дальше в маленьком окне выбираем File’s Owner и нажимаем Command+2 что переносит нас в меню Connections inspector. Видим там список наших указателей, которые мы уже прописывали, а справа от них пустые кружечки. Клацаем на пустой кружочек возле указателя nikField и не отпуская тянем к текстовому полю. Когда мы подводим к ниму указатель мыши, он обводится прямоугольником и отпускаем. Таким образом, мы привязали это поле к указателю nikField. Теперь сделаем так же с указателем username и перетащим его на тот текст, где хотим видеть наш ник (у меня на картинке это текст %username%). Еще чуть ниже видим наш метод setNik и связываем его с нашей кнопкой. Но когда вы поднесете к кнопке и отпустите, то выпадет контекстное меню из которого выберите Touch Up Inside. Это означает, что этот метод сработает когда мы нажмем и отпустим кнопку. То что нам и нужно :)
Ну что, сохраняем, переходим обратно в Xcode и нажимаем Build & Run. Урааа, наша первая программа запустилась :) Нажмем в текстовое поле, появляется клавиатура, пишем имя. Но в нашей программе еще не хватает одного маленького штриха. Это чтобы убиралась клавиатура по нажатию на кнопку Done, когда мы закончили вводить наше имя.
Для этого опять включимся в конструктор интерфейсов, нажмем на нашу кнопку. Нажмем Command+1 и найдем там блок Text Input Traits. В нем есть несколько выпадающих списков, но нас интересует только самый нижний: Return Key. Выбираем со списка Done и в низу блока ставим галочку возле Auto-enable Return Key. Дальше мереходим в Command+2 Connections Inspector и видем там слово delegate. Жмем на кружек возле него и тяним к блоку File’s Owner
Теперь возвращаемся в наш файл FirstAppViewController.m После нашего метода setNik добавляем еще такой код:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
Сохраняем и пробуем запустить (можно использовать комбинацию Command+R) Пробуем написать наше имя в текстовом поле. При написании появляется кнопка Done по нажатию на какую закрывается клавиатура. Теперь жмем на нашу кнопку и вуа-ля, программа с нами здоровается :)
Казалось бы какая мелоч, подумаешь написали такую мелоч. А я, когда много лет назад учил делфи, выучив один такой пример, чтобы по нажатию на кнопку что-то писалось на экране делал уже разные игрушки. Помните одну из самых первых браузерных игр Бойцовский клуб? Вот я делал себе ради забавы что-то похожее и там все было основано именно на таком принципе как мы только что с вами сделали. Так что играйтесь, экспериментируйте!
Вот вам еще линк на архив проекта http://dl.dropbox.com/u/298332/macdays/firstApp.zip Можно скачать, включить посмотреть если у кого-то что не получилось. Ну а если есть вопросы – то пишите в комментариях.
Вот скоро куплю себе iPhone, если не потеряется на почте, то тоже буду что-нибудь на нем программировать-экспериментировать. Кстати, после покупки iPhone напишу о том, как правильно покупать маки и айфоны из-за рубежа.
я вот тут тоже описывал как покупл с другом айфон на ebay.com http://mac.rv.ua/?p=107 Правда, тут скорее интересно для украинских читателей.
Хм.. По больше бы подобных статеек.. Маленьких, но позновательных.
Я скачать XCode + iPhone SDK не могу! Регистрация не завершается код не присылают! Что делать?
попробуй на другую почту зарегистрироваться. На мейл.ру может не доходить :) а еще в спаме посмотри.
Я на столько разных ящиков пытался зарегиться: и на маил и на яндекс и на рамблре- ничего!
зарегистрируйся на gmail
Лучше регать GMail, все российские мэйлы – унылое дерьмо, высранное студентом-двоечником-быдлокодером за неделю.
какая связь почтовой системы и кодера? :)))
правильно сказать неправильно настроенная система.
бартхерт оставьте при себе.
Не регься скачай с торрента
Скажите пожалуйста, у меня на вот этом шаге "Теперь, открываем файл интерфейса FirstAppViewController.xib Он запускается в редакторе интерфейсов Interface Builder." в меню Connections inspector почему-то не отображаются список уже прописанных указатлей. Не могу понять в чем дело. =( Все делал по порядку.
а выбери в окне Files Owner как на скрине http://drp.ly/13d6 и появится в разделе Connections inspector все что ты прописал.
Извените, что так долго не отвечал. Как-то плохо тут комментарии работают, не получаю уведомления на почту. Пишите если что на buddax2@gmail.com или на моем блоге homeless-developer.blogspot.com
Уведомления приходят только от комментариев-ответов (реплаев) к твоим комментариям.
Возможно, решением может послужить "Подписаться на все свежие комментарии" под формой ответа, но тогда необходимо написать хотя бы один комментарий к посту.
Ваше приложение не компилируется в связке Xcode 3.2.4 + SDK 4.1
error: base sdk missing. в чем косяк? они не совместимы с 3.1.3?
у меня такая же проблема как и у ZekiN и выбираю я всё правильно, но вот только ничего не меняется! их как-будто там и не должно быть!!!
Подскажите Xcode 3.2.5 + SDK 4.2 под Windows работать будут?
Нет.
Budut! Stav Oracle VM VirtualBox + 10.6.2 ot Hazard. Zatem sdelay backup Kernel i Extensions (cherz OSX86 Tools) i obnovis do 10.6.8, no glavnoe ne delay restart. Posle obnovleniya vosstanovi Kernel i Extension i potom uje delay restart.
Цитирую "Для этого опять включимся в конструктор интерфейсов, нажмем на нашу кнопку." Так вот не кнопку а текстовое поле. А вообще автору спасибо, хорошая статья для начинающих.
Da, ya toje obratil vnimanie. I soglasen, avtoru respect! :)
Получается чтобы пробовать надо сперва завестись MacOS?
И как я понял, чтобы скачать проги эти, нужно еще и айфон иметь, чтобы зарегестрироватся?
Чтобы установить Xcode, вам нужен Mac OS X. А скачать вы хоть сейчас можете, только не сможете ее запустить.
Я когда пробовал скачать, вылазило введити ID устройства
– (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
должно быть [nikField resignFirstResponder];
А вот и нет. Это метод делегата, он должен действовать на тот объект, который его вызвал. Нам известно, что его будет вызывать текстовое поле (textField… в названии кагбэ намекает), поэтому вместо (id)sender мы принимаем параметром сразу (UITextField *)theTextField и воздействуем на него.
не могу найти return key для кнокпки. Стоит Xcode 4. Эмулирую в Виртуальной машине. И как вызвать command 1 через кнопки windows ?
return key не у кнопки нужно ставить, а у текстового поля!
здоровски все.. )) а как написать прогу с помошью которй можно было бы писать тексты на айфоне и сохранять их. и чтоб можно было в эту программу внести любой скопированный текст.. ))
заранее огромное спасибо!! )
здоровски все.. )) а как написать прогу с помошью которй можно было бы
писать тексты на айфоне и сохранять их. и чтоб можно было в эту
программу внести любой скопированный текст.. ))
заранее огромное спасибо!! )
а как потом это прогу на iphone залить?
Apple, iPhone 4S Quadband 3G HSDPA GPS разблокированный телефон (SIM Free)
Цена :: 400 $
Apple, iPhone 5 HSDPA 4G LTE разблокированный телефон (SIM Free)
Цена :: 700 $
III Samsung Galaxy S i9300 Sim Free разблокированный телефон (SIM Free)
Цена :: 400 $
Новый Ipad Apple 3 64GB WiFi + 4G Белый
Цена :: 450 $
Skype :: gavin.ryker
BUDDA*2
Хорошее начало, чтобы попробовать себя в программировании. Сейчас это востребованно, платят точно больше среднего.