пишем приложение на swift
Пишем очень простое приложение на Swift под OS X
Jan 5, 2016 · 7 min read
Мне понадобилось (или ок, захотелось) написать небольшое приложение под OS X, которое бы показывало окошко с различной информацией. Раньше я такого не делал, поэтому решил заодно попробовать Swift — новый модный язык от Apple.
Читать документацию слишком лениво, поэтому я нашел пошаговую инструкцию по созданию приложения, которое считает количество нажатий на кнопку (How I Used Swift to Build a Menubar App for OSX), прошел по ней, сделал ряд исправлений и упрощений, чтобы все работало и ничего лишнего не лезло. Теперь делюсь опытом.
Предупреждение: Эт о максимально подробная инструкция для тех, кто не имел дела с Xcode. Возможно, некоторые шаги покажутся вам слишком очевидными.
Важно: Medium может модифицировать символы (например, кавычки) при вставке, из-за чего при копировании-вставке команд отсюда Xcode может ругаться и не работать. Постарайтесь переписывать команды руками, благо кода немного, а это полезно для запоминания. Ну или копируйте отсюда.
Для начала вам понадобится Xсode — это бесплатная среда разработки от Apple, скачать ее можно в App Store.
Запускаем Xcode и выбираем «Create a new Xcode project».
В следующем окне предложат выбрать шаблон для приложения. В левом меню надо выбрать OS X — Application, затем в правой части окна Cocoa Application
Нажимаем Next и в следующем окне вводим название приложения и идентификатор организации (и то, и другое можно брать из головы, лишь бы вы потом поняли, что это была за программа). В пункте Language надо переключить на Swift.
В следующем окне Xcode предложит выбрать, где создать папку с проектом. Я обычно кладу в «Документы», вы можете выбрать на свой вкус.
После этого Xcode покажет примерно такое окно:
Оно может в чем-то отличаться. Дополнительные колонки (серые справа и слева) можно включать и выключать кнопками в правом верхнем углу окна.
Кликаем на MainMenu.xlb в левой колонке — появится пустое поле. Если нажать на кнопку Window (ее видно на скриншоте), появится окно нашего приложения. Ура!
Теперь надо добавить в окно элементы — в нашем случае это поле с текстом и кнопка. Элементы находятся в нижней части правой колонки — там есть четыре переключателя. Надо переключиться на кружочек и появится список элементов.
Перетягиваем из этого списка на окно Push Button и Label. Если не удается найти какой-то элемент, начните вводить его название в поле Filter внизу — это поможет отфильтровать лишнее.
Вот что должно получиться в основном окне:
Если вам кажется, что элементы выглядят бедновато, то можете их отредактировать. Для этого надо кликнуть на нужный элемент (например, на Label) и в правой колонке вверху переключиться на вкладку «Show the Attributes inspector» (выглядит как вбитый куда-то колышек). Здесь можно поменять шрифт, цвета, размеры и так далее.
Я немного увеличил размер шрифта и поменял Title — теперь в приложении написано «Привет». Из-за увеличенного шрифта текст перестал влезать в предложенное ему поле. Поэтому я заметно увеличил размер этого элемента в окне, потянув за его углы.
Также я изменил Title кнопки, чтобы она была моей. Вот что получилось:
Переходим к программированию! Сначала немного шаманства. В правом верхнем углу надо нажать на кнопку с двумя перекрещенными кругами. Она откроет дополнительный редактор параллельно с основным ( в разных версиях Xcode кнопки могут выглядеть иначе — например, Assistant Editors может быть похож на пиджак).
В основном должен быть все еще открыт редактор интерфейса (MainMenu.xib). В дополнительном надо открыть AppDelegate.swift. У меня по умолчанию открылся другой файл. Чтобы переключиться на нужный, надо нажать на слово Automatic в заголовке этой дополнительной колонки, затем в выпадающем меню найти AppDelegate.swift (ищите там же, где показано на скриншоте).
Также я закрыл самую правую колонку, так как пока она не нужна. Для этого надо нажать на самую правую кнопку в верхнем правом углу. Вот как выглядит окно Xcode:
Вот как это выглядит:
Когда связываете элемент с кодом, появляется всплывающее окно. С текстовым полем все просто: надо оставить все, как есть, в Name вписать theLabel.
С кнопкой операцию надо провернуть дважды: сначала оставить Connection на пункте Outlet, а в название вписать «theButton». Во второй раз переключить Connection на Action, вписать в Name «pressedButton».
Теперь точно переходим к программированию. Чтобы не захламлять интерфейс, можно отключить Assistant, а в основном поле переключиться с MainMenu.xib на AppDelegate.swift. Нам сейчас нужно только редактирование кода в AppDelegate.swift.
Там у вас должен лежать такой код.
Если на предыдущих шагах что-то пошло не так, можете скопировать и вставить код отсюда.
В нашем коде есть две пустые функции applicationDidFinishLaunching и applicationWillTerminate. Границы функций определены фигурными скобками. Внутрь пока лезть не будем.
Ниже нашей серии @ IBOutlet’ов создадим переменную buttonPresses, которая будет хранить количество нажатий на кнопку. Для этого надо ввести строчку:
Теперь создадим функцию awakeFromNib, которая запустится сразу после загрузки окна нашего приложения.
Внутрь awakeFromNib, между открывающей и закрывающей фигурными скобками, надо положить команду, которая задает новую строку для нашего текстового поля:
На этом этапе уже можно проверить свою программу. Если нажать на Cmd+R (или кнопку с треугольником в левом верхнем углу Xcode) и подождать, запустится окно с нашей кнопкой и текстом!
Закрываем окно, нажимаем на черный квадратик рядом с треугольником и продолжаем ваять.
Надо создать еще одну функцию, которая будет считать количество нажатий на кнопку. Вот как она выглядит:
В первой строчке мы объявляем функцию, которая запускается при каждом нажатии на кнопку. Во второй увеличиваем значение переменной buttonPresses каждый раз, когда срабатывает функция, а в третьей — вписываем уже знакомый текст в текстовое поле.
Запускаем еще раз и ААААА
Автор исходного поста советует добавить также в код функцию:
которая выводит окно нашей программы на передний план. У меня и без этого выводится, но имейте в виду.
Маленькое дополнение: открываем файлы.
Просто тыкать в кнопку мне быстро надоело, поэтому я модифицировал функцию pressedButton, чтобы она открывала текстовый документ file.txt, лежащий на рабочем столе, и выводила его содержимое.
Если будете использовать, не забудьте поменять путь до файла.
Этот материал и скриншоты в нем доступны по лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная. Это значит, что вы можете использовать их в любом виде, в том числе в коммерческих целях, с указанием авторства и ссылки на источник. Автор: Султан Сулейманов.
Оригинальный материал (в котором также рассказывается, как добавить кнопку в верхнюю панель OS X).