Разработка Как программировать под Swift. Делаем первое приложение

Информатор avatar | 48
FavoriteLoading В закладки
Как программировать под Swift. Делаем первое приложение

Итак, продолжим знакомство с простым и интересным языком Swift. В прошлый раз мы познали базовые команды и функции перспективного языка программирования. А теперь сделаем своё первое приложение!

Как создать приложение для iOS

Сегодня мы сделаем простое приложение для расчета индекса массы тела и необходимого количества калорий для поддержания веса. Для этого будем использовать формулы Гарисса Бенедикта и индекса массы тела.

1. Для начала давайте создадим проект: запустите Xcode и нажмите комбинацию клавиш CMD+Shift+N или выберите в меню File->New->Project

2. Теперь выберите Tabbed Application и нажмите Next.

3. На этом этапе надо придумать имя для приложения (Product Name), нажать Next и выбрать папку для сохранения. Параметры Organization Name и Organization Identifier можете не менять.

Главное, чтобы значение в поле Language было равно Swift.

4. После того, как вы сохраните проект, перед вами появится рабочее пространство Xcode.

Слева у вас будет панель Navigator, а справа — Utilities. В каждой из этих панелей есть свои вкладки, которые позволяют получить доступ к различным функциям.

Например, первая влкадка в панеле Navigator показывает список файлов проекта, третья позволяет производить поиск по проекту и так далее.

5. Найдите в списке файлов проектов файл с именем Main.storyboard и нажмите на него.

Файл Main.storyboad определяет, какие экраны (контроллеры) есть в приложении. Вы можете добавлять элементы на экраны, задавать связи между экранами и так далее.

Если вы выберите какой-нибудь контроллер, он подсветится синей рамкой:

После того, как контроллер выбран, его свойства начнут отображаться в панели Utilities. Например, контроллеру можно поменять размер, выбрав другое значение в поле Size.

6. Запустим наше шаблонное приложение и посмотрим, как оно выглядит в симуляторе. Для этого надо в верхнем левом углу выбрать тип симулируемого устройства и нажать комбинацию клавиш CMD+R или кнопку с икокой Play.

Как видите, у нас есть приложение с двумя экранами, преключение между которым осуществляется при помощи таб-бара.

7. Нужно переименовать название табов. Для того, чтобы это сделать, надо выбрать таб, кликнув на него или выбрав его в иерархии элементов управления.

После того как таб будет выбран, он подсветится зеленым цветом.

8. Теперь в панели Utilities выбирайте Attributes Inspector и меняйте значение в поле Title на BMR/BMI для первого таба и Килокалории для второго.

Сейчас на первом контролере размещены всякие надписи. Их надо удалить. Для этого выделите их и нажмите Delete.

9. Теперь добавим свои элементы управления. Внизу панели Utilities есть Object Library, в которой можно выбрать объекты и добавить их к сцене. Найдите объект Label и перетащите его на контроллер BMR/BMI. Перед этим не забудьте два раза тапнуть на сцене, чтобы масштаб стал стандартным.

Должно получиться примерно так.

В панели Utilities можно поменять текст, размер шрифта и так далее.

10. Перетащите еще несколько лейблов и поставьте им такой же текст, как и на картинке. Для последнего лейбла нужно поставить Lines в 2, чтобы текст переносился на другую строку.

11. Теперь добавьте 3 текстовых поля (Text Field).

И разместите их, как на картинке.

У текстовых полей поставьте параметр keyboard type в Number Pad.

И установите текст по умолчанию.

12. Теперь добавим элементы управления для выбора пола и кол-ва тренировок в неделю. В Object Library ищете Segmented Control и добавляйте на экран.

У Segmented Control можно менять количество сегментов и текст для каждого сегмента.

Сделайте так, чтобы сегменты выглядели, как на скриншоте.

13. Теперь добавьте кнопку (button).

И установите ей заголовок.



После этого добавьте еще один label с lines равным 4.

14. Выберите контроллер BMI/BMR, нажмите два пересекающихся кольца в правом верхнем углу и откроется Assistant Editor. Он показывает код, ассоцированный с этим контроллером.

15. Протащим элементы управления.

Для этого выберите первый text field (в нашем случае это будет возраст), нажмите Ctrl, кликните на него еще раз и, не отпуская кнопки, перетащите внутрь класса. Если все сделано правильно, то вы увидите посказку “Insert Outlet, Action, …”.

Теперь отпустите курсор, и вы увидете окошко для создания связи. В качестве имени введите ageTextField и нажмите Connect.

16. У вас появится переменная ageTextField.

Проделайте эту процедуру для оставшихся text field, segmented controls и label с текстовым результатом. У вас должно получиться так:

Теперь протащите кнопку, но тип соединения укажите не Outlet, а Action. И в качестве имени используйте calculateTapped.

17. Теперь скопируйте следующий код в метод calculateTapped.

Этот код выполняет расчет и выводит результат на экран.

18. Пришло время подвести итог. Давайте запустим и проверим:

Ваша первая программа готова! Молодцы!

Задавайте вопросы

Если что-то не получается по ходу дела, пишите в комментарии. Специально для этого мы пронумеровали каждый пункт. На все вопросы ответят разработчики-профессионалы из команды, так что не стесняйтесь.

Над текстом трудился Руслан Гуменный — ведущий разработчик e-Legion. Компания является лидером на рынке заказной мобильной разработки в Европе, входит в состав холдинга DZ Systems. За 9 лет существования были созданы приложения для РайффайзенБанка, Яндекса, BMW, Банка Москвы, Первого Канала, Aviasales, Sports.ru, ВГТРК, Mail.Ru Group и многих других компаний.

Если вы шарите в теме и вам есть, что добавить, не стесняйтесь – пишите в редакцию со своими статьями на тему разработки приложений. В следующем выпуске подробнее рассмотрим, что было сделано и доработаем приложение, подготовив его к публикации. Так что подготовьтесь заранее, сделав домашнее задание :)

Уверен, все остальные давно мечтали «сделать свое приложение для айфона». Это ваш шанс. До скорых встреч в следующих статьях цикла!

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (6 голосов, общий рейтинг: 4.67 из 5)
undefined
iPhones.ru
Итак, продолжим знакомство с простым и интересным языком Swift. В прошлый раз мы познали базовые команды и функции перспективного языка программирования. А теперь сделаем своё первое приложение! Как создать приложение для iOS Сегодня мы сделаем простое приложение для расчета индекса массы тела и необходимого количества калорий для поддержания веса. Для этого будем использовать формулы Гарисса...
Прокомментировать

🙈 Комментарии 48

  1. iChernovik avatar
    iChernovik13 апреля 2015
    1

    ох… какая чудовищная статья… просто чудовищная…

    iChernovik avatar
    iChernovik13 апреля 2015
    7

    @iChernovik, дорогие авторы, если раньше вы сыпали в кучу КУРСИВ, пОлУжИрНыЙ и устраивали прочие игрища шрифтов, заставляя читателей рыдать кровавыми слезами, то сегодня вы превзошли себя. Кроме чудовищной, дичайшей чехарды шрифтов и выделений вы решили добавить вишенку на торте – гигантские скриншоты с разными масштабами, разбавленными просто утонувшими в них строчками комментариев. Я уже не говорю, что половина действий привязана к одному и тому же скриншоту, хотя описывают указанное на скриншоте в разных ситуациях и в разных режимах (например connect при провязке IBOutlet) становится активной только когда имя переменной уже введено, а на скриншоте эта кнопка просто неактивна… Я извиняюсь, но ЭТО читать просто невозможно.

    iChernovik avatar
    iChernovik13 апреля 2015
    0

    @iChernovik, я уж не говорю просто об ошибках в тексте. “контроллер BMR/BMI” – у вас BMR/BMI не контроллер, а элемент интерфейса – UIBarButtonItem. Контроллер BMR/BMI – это код, этим элементом интерфейса управляющий…

  2. tet-a-tet avatar
    tet-a-tet13 апреля 2015
    3

    Why?

  3. cd_racer avatar
    cd_racer13 апреля 2015
    82

    типичный пример “как не надо программировать”, причем в чем угодно…

    нет, я конечно понимаю, здравствуй мир и все такое … Но сразу приучать создавать мешанину с вычислениями/алгоритмикой и интерфейсными методами…

    MVC-подход канул в Лету теперь?

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

    Cegou6 avatar
    Cegou613 апреля 2015
    4

    @cd_racer, это будущее, которое планомерно наступает. Программирование перестанет быть уделом “избранных”, и в вашем понимании(как и в моем) “испохабится” до визуального программирования.

    goodhoopoe avatar
    goodhoopoe14 апреля 2015
    0

    @Cegou6, программирование никогда не было уделом избранных. Чтобы разбираться в программировании достаточно выучить и понять 3 основных оператора во всех языка программирования, понять принцип объектной модели и нужно обладать логикой и основами математики. Все.

    cd_racer avatar
    cd_racer14 апреля 2015
    1

    @Cegou6, нене, “избранность” программирования – некорректный термин. Это как “избранность” машиниста поезда или пилота самолета.

    Программирование – это обычное ремесло. Создание продукта (идея/архитектура/интерфейс) – это искусство в бОльшей степени. Н и там нужны определенные навыки и знания.

    Потом не стоит путать программирование, как способ решения своих прикладных задач с использованием вычислительной техники, с программированием для создания рыночного продукта. Разные уровни сложности/качества и тп.

    Кстати, визуальное программирование вполне в рамках парадигм работает, даже местами приструняет шаловливые ручки, ибо некоторые вещи просто недоступны :)

    lookinway avatar
    lookinway13 апреля 2015
    7

    @cd_racer, ну зачем сюда лезть с архитекурой сразу? Первое приложение же, которое вы пишите для себя максимально просто и быстро (во всех смыслах).

    admiless avatar
    admiless13 апреля 2015
    0

    @lookinway, максимально просто и быстро и ничего не понятно.
    можно было залить весь проект и каждый сам собрал бы, было бы еще проще, настолько же непонятно.
    урок как нарисовать два экрана интерфейса, но про сам Swift ни слова. вставьте код и у вас все получится…
    судя по такому уроку Swift проще Logo, но даже там, первая программа – “Привет мир!” не нравится, замените на яблоки, ну или добавьте свое.
    но расскажите про сам язык, а не как нарисовать два экрана с готовым кодом
            var bmr: Double = 0
            var bmi: Double = 0
    вот эти вары, что значат? и что они дублируют? и почему дубль вар равен нулю? :)

    cd_racer avatar
    cd_racer14 апреля 2015
    2

    @lookinway, во-первых 80% приложений тех, кто начинал с подобных примеров – это как раз их видоизмененный код. Поэтому лучше сразу делать все красиво, нежели потом заставлять человека мучаться. Кстати, красиво != сложно.
    во-вторых – просто и быстро в моменте не означает, что дальше программу будет так же легко менять и дорабатывать. Иногда просто шуруп плоскогубцами вколотить. Вся разница в технологичности. Как раз товары дядюшки Ляо этим и отличаются: чем меньше кустарщины, тем выше качество.

    Потом не стоит путать продукт для рынка и поделку для себя.

    Silmaril avatar
    Silmaril14 апреля 2015
    0

    @cd_racer, прототипы для того и нужны чтобы их быстро создать, а потом выкинуть.

    cd_racer avatar
    cd_racer14 апреля 2015
    0

    @Silmaril, прототипы продают с аукционов :)))

    goodhoopoe avatar
    goodhoopoe14 апреля 2015
    0

    @cd_racer, когда ребенок приходит в первый класс он учится писать буквы и правильно рисует закорючки а не изучает деепричастные обороты в сложноподчиненных предложениях. Аналогию думаю проведете. Во всех уроках мвц объясняется уроку к 4 минимум

    cd_racer avatar
    cd_racer14 апреля 2015
    0

    @goodhoopoe, вообще-то учится писать буквы, но соблюдая правила

    а тут не буквы дали, а сразу отрывок из Руслана и Людмилы, перебор

  4. iChernovik avatar
    iChernovik13 апреля 2015
    0

    Хм… ну и, кажется, в статье “как программировать под Swift” должна быть написана хотя бы строчка кода на Swift, нет? Тут у нас – автоматическое пробрасывание IBOutlet и IBAction + “скопируйте вот этот код” – ну какое же это программирование? :(

  5. beginerX avatar
    beginerX14 апреля 2015
    3

    в принципе нормально, простое приложение в котором все основные возможности начального уровня освещены. МVС на мой взгляд не нужный для простых приложений хлам и изнасилование мозга. ООП формы-кнопочки отлично подходит для простых интерфейсов пользователя. Лучше в дальнейшем сделать игру тем более что там есть заготовка именно приложение типа Игра! Теннис или пинг-понг например, или разбивалка кирпичной стены. Интересно как там в свите со спрайтами и коллизиями столкновений? Как со звуком работать? Самому лень читать книжку… вот мастера-практики разжуют и это будет хорошо!

    cd_racer avatar
    cd_racer14 апреля 2015
    1

    @beginerX, ну пример в статье – это классический процедурный подход, ООП там и не пахнет.

    Silmaril avatar
    Silmaril14 апреля 2015
    2

    @cd_racer, в статье вообще не пахнет программированием. Просто накидали кнопочек и скопировали пару строк кода, даже не объясняя что там делается. По сути это урок не о том как программировать на Swift, а о том как пользоваться Interface Builder’ом. Все тоже самое можно сделать точно такими же шагами и в Objective-C

    beginerX avatar
    beginerX14 апреля 2015
    0

    @cd_racer, кнопочка это объект на экране или на форме, экран и форма тоже объекты, так что это четкий кристально чистый ООП не замутненный кривизной ситнаксических выкрутасов

    cd_racer avatar
    cd_racer14 апреля 2015
    0

    @beginerX, ???? мама моя … да переменная int i тоже объект при такой мотивировке, и тип данных, и кнопочка на клавиатуре, и даже тот, кто ее жмет.

    ООП – это концепция программирования. Использование в программе объектов еще не значит, что программа построена сообразно принципам ООП. Ну это-то уж надо понимать.

    Кстати, было про первый класс и буквы … Вот как раз с принципов и надо было начать, а так ООП остается пустой аббревиатурой.

    beginerX avatar
    beginerX24 апреля 2015
    0

    @cd_racer, ну ты лох, int во мноших языках является полноценным объектом, ты дебил. Повторю для тупых – Сфивт это ООП язык.

    cd_racer avatar
    cd_racer25 апреля 2015
    0

    @beginerX, о, в каждом слове читается профессионал с большой буквы 3.14, прямо новый Страуструп вылупился…. Вес наберет и ого-го… :)) Осталось всего ничего: кроме букв и отдельных слов смысл написанного такому гению понимать научиться.
    Иначе по сути-то, гляжу, нечего возразить :))

  6. D@rkmind avatar
    D@rkmind14 апреля 2015
    4

    Это все замечательно, но в следующем выпуске планируете добавить например сохранение данных? То есть чтобы приложение не открывалось каждый раз как с нуля.
    Я это к чему – руководств типа “пишем первое приложение” для iOS в интернете просто тонны уже. Но все как одно – создали проект, натакали элементиков, связали с кодом, написали функцию-считалку. И все, на этом руководство заканчивается. Кажется, пойду тоже попробую свое написать. А понимаешь что ничего маломальски полезного даже для себя с такими знаниями не напишешь.
    Хоть бы кто заморочился вопросом – а теперь сохраним введенные данные для следующего запуска приложения. Вот тут уже фантазия дальше может развернуться в плане применения

    И еще было бы неплохо ссылки на хорошее описание API. Чтобы заинтерисовавшиеся легко могли дальше идти копать

    goodhoopoe avatar
    goodhoopoe14 апреля 2015
    1

    @D@rkmind, ссылка на лучшее апи developer.apple.com

    MaIronCool avatar
    MaIronCool14 апреля 2015
    3

    @D@rkmind, полностью согласен, в Интернете тысячи примеров, все как один показывают как накидать интерфейс, да там показывать то не надо ничего, тяни мышкой и все.

    А как чуть глубже, так у всех проблемы: например показать работу с данными в базе MySQL, загрузка и выгрузка записей, загрузка и выгрузка изображений из базы.

    Это вообще один из самых главный моментов, потому как все крутиться вокруг данный твоей организации.

    i2g avatar
    i2g14 апреля 2015
    0

    @MaIronCool, зайдите на Udemy. Если хотите объемный курс, то заплатите за него. Писать объемные уроки бесплатно не хочет никто.

    goodhoopoe avatar
    goodhoopoe14 апреля 2015
    0

    @MaIronCool, в нормальных организациях не дают доступ к базе извне, а только на уровне апи, ибо любое приложение можно же компилировать и получить доступ к бж, апи декомпилировать не получится

  7. goodhoopoe avatar
    goodhoopoe14 апреля 2015
    0

    Есть несколько замечаний, которые думаю будут интересны новичкам: имхо стоило объяснить отличие iboutlet от ibaction. Рассказать чем отличаются закрашенные точки напротив iboutlet от незакрашенных. А так же исправить пункт 5. Сторибоарды действительно отображают экраны(сцены) но ни не являются контролерами, ведь при создании шаблонного приложения экран автоматически связывается с контроллером и поэтому есть возможно с помощью драгндропа перекидывать элементы в код для создания аутлетов и экшнов. Если же экран не связан с контроллером, то драгндроп просто не сработает(когда только начинал изучать язык для меня это было жестким затыком, я вручную добавлял контроллеры на сторибоард)

  8. bezromval avatar
    bezromval14 апреля 2015
    1

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

  9. iMaxEst avatar
    iMaxEst14 апреля 2015
    1

    @ureozu, мои соболезнования…

  10. Adkirill avatar
    Adkirill14 апреля 2015
    1

    Тема крутая. Буду пробовать на выходных.

  11. Scheisse avatar
    Scheisse14 апреля 2015
    0

    O JA…JA !!!!

  12. Pz. avatar
    Pz.14 апреля 2015
    1

    Хотелось бы попросить автора посоветовать литературу для самостоятельного изучения. И вообще, насколько реально дома научиться кодить на более менее вменяемом уровне?

    Interpreter avatar
    Interpreter14 апреля 2015
    0

    @Pz., присоединяюсь.

    MaIronCool avatar
    MaIronCool14 апреля 2015
    1

    @Pz., вполне реально научится кодить дома, я думаю многие с этого начинали, все упирается во время,

    Для начала можно недельку почитать введение и базовые принципы объектно-ориентированного программирования, что бы быть в курсе, что такое функции, классы, наследование, переменные, выход из функции, циклы.

    Потом можно посмотреть ролики на ютубе, типа «начинаем программировать в XCode».

    Так же можно поставить перед собой задачу, а потом попытаться решить её, в процессе решения, очень много вопросов возникнет.

    Ну а вообще, если действительно хорошо освоить среду, это надо несколько лет, причем заниматься этим плотно.

    fanruten avatar
    fanruten14 апреля 2015
    0

    @Pz.,
    http://www.raywenderlich.com/ — отличный сайт с кучей туториалов
    http://www.objc.io/ — ежемесячный журнал в каждом выпуске которого, очень глубоко разбирают какую-нибудь тему
    https://itunes.apple.com/ru/book-series/swift-programming-series/id888896989?mt=11 — учебник по swif от Apple
    http://nshipster.com/ — фишки языка/платформы

  13. EvgenyTur avatar
    EvgenyTur14 апреля 2015
    1

    Все правильно говорят! Давайте конструктивно продолжим эту тему:
    В следующем занятии перепишем тот же пример с применением MVC (Model-View-Controller) и добавим persistent store для хранения данных.
    Затем надо показать, как данные хранятся в разных видах, Key-Value, SQLite/CoreData и прочих. Как хранить картинки.
    Потом очень желательно показать, как осуществить синхронизацию данных через iCloud. Как использовать Parse.
    А уж затем перейти к созданию простых игр, да, типа тенниса. Там тоже нужно иметь сохранённые и синхронизированные данные.

    Silmaril avatar
    Silmaril14 апреля 2015
    0

    @EvgenyTur, А чем вам не MVC в текущем примере? По сути из трех составляющих здесь отсутствует Model. Но как я понимаю в этом уроке автор не добавлял модель по тому что не стояла задача объяснять код. А без этих объяснений моделей не будет

    cd_racer avatar
    cd_racer14 апреля 2015
    0

    @Silmaril, вообще-то зачастую потом этот model нигде и не добавляется, так и живет, размазанный по интерфейсным методам.

  14. upsoft avatar
    upsoft14 апреля 2015
    2

    отправил на рецензию. Жду первый миллион.

  15. gilmor avatar
    gilmor14 апреля 2015
    0

    Скриншоты надо делать еще крупнее.

  16. beginerX avatar
    beginerX14 апреля 2015
    1

    ИГРЫ ДАВАЙ !!! считалки-сохранялки это все детский лепет никому не нужный. Сейчас актуально толлько ИГРЫ ! Только в играх остался шанс заработать. Причем простые и очень простые мгры, порой голая идея с простой 2D обвязкой бешено выстреливает, например Флэпи бирд, вижу в апсторе много оригинальных простеньких но имеющих огомное кол-во загрузок. Так что автор заканчивай со считалкми, ДАВАЙ ИГРЫ !!! На презентации Эпла кстати была игра и типа ее как-то очень просто по их словам делать и модернизировать на лету.

    beginerX avatar
    beginerX14 апреля 2015
    1

    тем кто хочет SQL-cloud и ид, это все вторично вспомогательно, для игр есть специфические онлайн и офлайн сервисы, но изучать образно говоря Авто-Аптечку и НЕ изучить хотя бы в общих чертах сам Автомобль это глупо.

  17. perlik avatar
    perlik15 апреля 2015
    0

    +100500. И не под swift, а на swift

  18. iDaMax avatar
    iDaMax21 апреля 2015
    0

    После вставки кода, появилась куча красных линий с ошибками

  19. Xpressss avatar
    Xpressss1 июня 2015
    0

    Доброго времени суток! Такой вопрос: как можно использовать результат bmr во втором viewcontroller? Я так понимаю здесь нужен delegate?

    Спасибо!

  20. IlyaOgnev avatar
    IlyaOgnev13 января 2017
    0

    Добрый день!У меня такой вопрос: я хочу создать программу, в которой задействован гироскоп, можете поподробней объяснить, как написать код, как его включить в программу или где можно поподробнее почитать об этом

Вы должны авторизоваться или зарегистрироваться для комментирования.

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.

Как установить аватар в комментариях?

Ответ вот здесь