Пишем свою первую программу для iPhone

Мар 31 • Программирование • 462 Просмотров • Комментарии (32)

Ну что-же, пришло время написать нам свою первую программу для нашего 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 Можно скачать, включить посмотреть если у кого-то что не получилось. Ну а если есть вопросы — то пишите в комментариях.

  • http://intensedebate.com/people/baxx Аноним

    Вот скоро куплю себе iPhone, если не потеряется на почте, то тоже буду что-нибудь на нем программировать-экспериментировать. Кстати, после покупки iPhone напишу о том, как правильно покупать маки и айфоны из-за рубежа.

  • http://macdays.ru buddax2

    я вот тут тоже описывал как покупл с другом айфон на ebay.com http://mac.rv.ua/?p=107 Правда, тут скорее интересно для украинских читателей.

  • Антошка

    Хм.. По больше бы подобных статеек.. Маленьких, но позновательных.

  • Никита

    Я скачать XCode + iPhone SDK не могу! Регистрация не завершается код не присылают! Что делать?

    • http://twitter.com/buddax2 buddax2

      попробуй на другую почту зарегистрироваться. На мейл.ру может не доходить :) а еще в спаме посмотри.

      • Никита

        Я на столько разных ящиков пытался зарегиться: и на маил и на яндекс и на рамблре- ничего!

        • Dmitry

          зарегистрируйся на gmail

        • http://twitter.com/vladkorotnev Vladislav Korotnev

          Лучше регать GMail, все российские мэйлы — унылое дерьмо, высранное студентом-двоечником-быдлокодером за неделю.

          • Async

            какая связь почтовой системы и кодера? :)))
            правильно сказать неправильно настроенная система.
            бартхерт оставьте при себе.

    • Partemsky

      Не регься скачай с торрента 

  • ZekiN

    Скажите пожалуйста, у меня на вот этом шаге "Теперь, открываем файл интерфейса FirstAppViewController.xib Он запускается в редакторе интерфейсов Interface Builder." в меню Connections inspector почему-то не отображаются список уже прописанных указатлей. Не могу понять в чем дело. =( Все делал по порядку.

    • http://twitter.com/buddax2 buddax2

      а выбери в окне Files Owner как на скрине http://drp.ly/13d6 и появится в разделе Connections inspector все что ты прописал.

      Извените, что так долго не отвечал. Как-то плохо тут комментарии работают, не получаю уведомления на почту. Пишите если что на buddax2@gmail.com или на моем блоге homeless-developer.blogspot.com

      • http://intensedebate.com/people/baxx Аноним

        Уведомления приходят только от комментариев-ответов (реплаев) к твоим комментариям.
        Возможно, решением может послужить "Подписаться на все свежие комментарии" под формой ответа, но тогда необходимо написать хотя бы один комментарий к посту.

  • otto

    Ваше приложение не компилируется в связке Xcode 3.2.4 + SDK 4.1
    error: base sdk missing. в чем косяк? они не совместимы с 3.1.3?

  • baboon

    у меня такая же проблема как и у ZekiN и выбираю я всё правильно, но вот только ничего не меняется! их как-будто там и не должно быть!!!

  • km2001

    Подскажите Xcode 3.2.5 + SDK 4.2 под Windows работать будут?

    • http://khanov.com/ Аноним

      Нет.

    • http://twitter.com/firuz1844 Firuz Narzikulov

      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.

  • Molier

    Цитирую "Для этого опять включимся в конструктор интерфейсов, нажмем на нашу кнопку." Так вот не кнопку а текстовое поле. А вообще автору спасибо, хорошая статья для начинающих.

    • http://twitter.com/firuz1844 Firuz Narzikulov

      Da, ya toje obratil vnimanie. I soglasen, avtoru respect! :)

  • Александр

    Получается чтобы пробовать надо сперва завестись MacOS?
    И как я понял, чтобы скачать проги эти, нужно еще и айфон иметь, чтобы зарегестрироватся?

    • http://khanov.com/ Салават Ханов

      Чтобы установить Xcode, вам нужен Mac OS X. А скачать вы хоть сейчас можете, только не сможете ее запустить.

  • Александр

    Я когда пробовал скачать, вылазило введити ID устройства

  • Conceptds

    - (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    [theTextField resignFirstResponder];
    return YES;
    }

    должно быть [nikField resignFirstResponder];

    • http://vladkorotnev.github.com Vladislav Korotnev

      А вот и нет. Это метод делегата, он должен действовать на тот объект, который его вызвал. Нам известно, что его будет вызывать текстовое поле (textField… в названии кагбэ намекает), поэтому вместо (id)sender мы принимаем параметром сразу (UITextField *)theTextField и воздействуем на него. 

  • http://twitter.com/Timur_Mustafin Timur Mustafin

    не могу найти return key для кнокпки. Стоит Xcode 4. Эмулирую в Виртуальной машине. И как вызвать command 1 через кнопки windows ?

    • Gudus

      return key не у кнопки нужно ставить, а у текстового поля!
       

  • gess14

     здоровски все.. )) а как написать прогу с помошью которй можно было бы писать тексты на айфоне и сохранять их. и чтоб можно было в эту программу внести любой скопированный текст.. ))
    заранее огромное спасибо!! )

  • gess14

    здоровски все.. )) а как написать прогу с помошью которй можно было бы
    писать тексты на айфоне и сохранять их. и чтоб можно было в эту
    программу внести любой скопированный текст.. ))
    заранее огромное спасибо!! )

  • Максим Андреев

    а как потом это прогу на 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

  • Guest

    BUDDA*2

comments powered by Disqus

« »

53207074 Яндекс.Метрика Яндекс.Метрика