После последней части под названием научиться программировать игры для iOS: знание Xcode, и прежде чем мы перейдем к Cocos2d, давайте немного углубимся в Xcode. В этом случае мы будем взаимодействовать с созданными элементами, вместо того, чтобы ограничиваться простым «Hello world».
Благодаря этому вы приобретете навыки работы с Xcode и сможете быстро создавать свои первые «полезные» приложения; изучив основы использования кнопок и текстовых меток. Поскольку этот класс несколько сложнее предыдущего, у вас будет практический пример, доступный для загрузки в конце сообщения, чтобы вы могли запустить его и убедиться, что он работает правильно!
Сначала мы открываем Xcode и создаем новый проект, выбирая шаблон «приложения с одним представлением», как и в предыдущем классе; Это создаст рабочее пространство на основе одного окна с его «графическим помощником». После открытия выбираем файл viewcontroller.xib (Напомним, что это «графическое лицо» нашего первого представления или сцены, называемое viewcontroller, и чья часть «кода» находится в файлах viewcontroller.m y viewcontroller.h), и мы переходим к блоку объектов, расположенному в правом нижнем углу, чтобы начать перетаскивать компоненты на нашу сцену: метки, кнопки ... там будет все!
Как мы видим на изображении, на этот раз мы перетащили следующее:
- Объект "этикетка«, В порядке заголовка. Он ни с чем не будет взаимодействовать.
- Другой объект «этикетка«, Который будет содержать числовые значения.
- А А "шаговый«, Отвечает за увеличение или уменьшение числового значения предыдущей« метки ».
- Un кнопка чтобы проверить, соответствует ли числовая «метка» ранее выбранному нами значению.
Вы уже знаете, о чем это упражнение? Очень просто; Нам нужно будет выбрать свой возраст (год за годом с «степпером»), а затем с помощью кнопки проверки выяснить, достигли ли мы совершеннолетия. Как ни абсурдно, но и познавательно, с этим упражнением вы узнаете, как росчерк пера несколько вещей.
Как вы можете видеть на изображении выше, размер и цвет «этикетки» могут быть олицетворять. У каждого объекта есть множество параметров, которые вы можете узнать, если немного исследуете. После того, как вы оставили каждый объект с характеристиками, которые вам больше всего нравятся, самое время подвести итоги: пока что у нас есть «нарисованный»Наше приложение; ничто не взаимодействует ни с чем ... нам нужно придать ему единство.
Для этого мы собираемся возиться с некоторыми код (очень простые и элементарные объяснения); конкретно с файлом viewcontroller.h, в котором находятся основные определения класса viewcontroller (наше главное окно!). Он не выполняет код или действия, он только устанавливает основы и необходимые функции, чтобы viewcontroller.m можно использовать их и выполнять тяжелую работу ... что мы увидим в viewcontroller.xib! Все три стороны одной медали.
Объяснив это, мы можем начать определять в «коде» все объекты, которые мы определили визуально. Заходим в архив viewcontroller.h, и мы добавляем следующее:
Есть несколько способов определить переменные или элементы, но в этом случае, поскольку нам нужен элемент для доступа к ним (наше окно, графическая часть), мы назначаем их таким образом (начиная с @property). Это тема, к которой мы обратимся в будущих классах, а пока стоит знать, к чему относится каждый из них или что он определяет: «этикетка»(Только один, поскольку заголовок, который мы создаем, не будет ни с чем взаимодействовать, и нам не нужно определять его в коде), целочисленная переменная с именем«Возрастное большинство»(Это новое, мы не помещали его в графическую часть .. он будет хранить только возраст совершеннолетия для сравнения),«шаговый»(Называется stepper1).
В дополнение к вышесказанному, есть еще две функции (две, начинающиеся с дефиса, являются функциями); один из них будет что-то делать, когда мы нажимаем на степпер (Например, заставить «ярлык» изменить наш возраст? точное), а другой отвечает за сравнение текущего возраста метки с установленным нами.
Пока мы определили графическую часть, а также кодовую часть. Однако как научить наше приложение тому, чему соответствует каждая переменная или элемент кода, с их эквивалентом в графической части? Что ж, очень просто. Нажимаем на viewcontroller.xib, и мы нажимаем на круглую серую кнопку с формой «играть» и текстом «показать контур документа», который мы находим в нижнем левом углу квадратного листа. При этом отобразится панель с элементами нашего окна.
Мы смотрим на «Заполнители» выше, которые содержат два куба: желтый (владелец файла), в котором мы будем связывать объекты с кодом (метки, кнопки и т. Д.); и еще один красноватый (First Responder), где мы будем связывать функции, которые мы определили, с различными действиями (например, при нажатии кнопки выполняется функция).
Начнем с предметов. Щелкните правой кнопкой мыши куб «Владелец файлов», откроется черное меню. Отображаем раздел «Розетки», и мы увидим все элементы, которые мы определили в коде (их всего два, label и stepper1); мы должны перетащить их в соответствующий графический элемент: этикетка с числовой меткой, которую мы создали, и степпер1 с шаговым двигателем.
Когда мы перетаскиваем его, мы увидим, как создается «синее щупальце», которое следует за нашей мышью к объекту, который мы хотим связать. (Примечание: чтобы начать процесс перетаскивания, вы должны щелкнуть пустые кружки рядом с названием каждого объекта, как на фото)
Теперь вам нужно проделать то же самое с функциями; щелкнув правой кнопкой мыши «Первый ответ», мы сделаем следующее:
- Нажимаем на «checkAge» и, не отпуская, перетаскиваем до кнопки нашего графического окна, той, которая проверяет возраст. Открывается новое выпадающее меню, и мы выбираем «Touch down».
- Мы делаем то же самое с «stepperValueChanged», но на этот раз мы перетаскиваем его в наш графический «степпер» и в раскрывающемся меню выбираем «Value Changed».
Сейчас остается только добавить "настоящий код" в viewcontroller.m; мы должны сообщать вам, что делать с каждым происходящим действием. Мы начнем с того, что посоветуем вам знать о переменных, определенных в viewcontroller.h (переменная установленного законом возраста, переменная шагового двигателя и переменная метки; обе связаны с их графическим аналогом) с использованием «@synthesize имя_переменной_u_element«, Как мы видим на изображении:
Не выходя viewcontroller.m, мы направились к функции просмотрDidLoad (в конце файла) и чуть ниже того, что уже написано, но перед «}«, Мы определяем, какой должен быть возраст совершеннолетия в нашей стране. В этом случае 18:
Наконец, мы собираемся создать и запрограммировать функции которые мы определили в viewcontroller.h (их всего два). Один будет выполняться каждый раз, когда мы нажимаем на степпер, и он должен отображать возраст, который меняется, на нашей «метке».
Другой будет выполнен, когда мы нажмем кнопку проверить возраст, и он проверит (стоит избыточности), равен ли введенный нами возраст совершеннолетию или превышает его: если ответ положительный, фон приложения изменится на зеленый; в противном случае он станет красным. Оба должны быть помещены в файл viewcontroller.m; например, непосредственно перед функцией - (недействительно) viewDidLoad.
Теперь самое лучшее. Вы должны попробовать! Перейдите к кнопке воспроизведения выше, убедитесь, что выбран «Симулятор iPhone», и щелкните. Ваше окно откроется, и вы сможете с ним взаимодействовать!
Упражнение можно было бы сделать более сложным, но с этим у вас есть основы для самостоятельного исследования и опробования новых вариантов. Чтобы было проще следовать руководству, из любопытства или на случай, если вы не можете заставить его работать, вот проект в архив сжатый! Надеюсь, это послужило вам ... до следующего раза!
Больше информации - Научитесь программировать: знакомство с Xcode (I)
Скачать - Второй класс программирования для Xcode
Прекрасно, надеюсь, вы не откладываете публикацию дополнительных курсов. Но вы можете подробно указать, что делает каждая функция, например: «*) отправитель» и «Выбрано:% d», так как есть люди, которые не знают objective-c. Очень хороший пост.
Приветствую Серхио Абриль.
Привет!
Большое спасибо, я объясню кратко, «быстро» и «легко», так как это очень удачный вопрос:
Обычно, когда вы определяете функцию, вы должны добавить параметры, которые вы хотите передать этой функции, и с которыми вы хотите работать с ней; В случае кнопок и степперов мы добавляем их, чтобы функция знала, что она вызывает определенный объект (в случае одного - UIButton, а в случае другого - UIStepper), которому мы присваиваем имя мы хотим работать с внутренней частью функции (в данном случае оба «отправителя», но работает любой). Следовательно, после имени функции идет двоеточие, а затем (UIButton *) Sender.
Чтобы показать вам, что эти функции получают «объект, который их вызывает», хотя это правда, что я этим не воспользовался, попробуйте следующее:
Замените в функции checkerValuechanged (внутри viewcontroller.m) все найденные "stepper1" на "sender". Вы увидите, что он продолжает работать так же, и результат тот же (хотя в случае этого упражнения я не использовал данные, которые «отправитель» получает и сохраняет, но я сделал прямую ссылку на stepper1 (что то же самое) ... отсюда возникают сомнения ... так хорошо спросили!
Что касается второго, NSLog - это не что иное, как экранный «журнал», так что текст, который мы помещаем между кавычками, появляется ниже в консоли Xcode. Если, кроме того, мы хотим, чтобы он отображал определенные значения, чтобы видеть, например, в этом случае, какое значение всегда имеет stepper1, это правильный способ его добавления; поместив туда, где мы хотим, чтобы значение было% d, а после кавычек - имя переменной. (% d относится к тому факту, что это целочисленное значение. Если бы это было, например, десятичное число, вам пришлось бы поставить% f).
В какой-то момент вы можете подумать, что мы должны поместить NSLog (@ »selected: VARIABLE»);, но поскольку все, что находится в кавычках, выходит «буквально», значение не будет отображаться, кроме слова VARIABLE ... и у вас есть прибегнуть к NSLog (@ »selected:% d", VARIABLE), чтобы при обнаружении "%" он знал, что есть значение, которое мы поместим после запятой.
Это немного сбивает с толку, но я надеюсь, что объяснил
Спасибо за вашу щедрость; так держать 🙂
Пожалуйста, не переставайте писать пост, он очень полезен, и я уверен, что многим, в том числе и мне, он понравится.
Две статьи, которые у вас есть, отличные. Я с нетерпением жду следующих, чтобы продолжить изучение этого нового языка. Один вопрос, потому что используемые функции относятся к типу IBAction, а не просто void?
Вы никогда ничего не программировали и делаете все так просто. Большое спасибо за написание этих статей. Я с нетерпением жду других, извините, но некоторые книги или веб-страницы позволят продолжить изучение предмета. Мне очень любопытно узнать, как создавать приложения. независимо от того, на английском ли они, я надеюсь, вы мне поможете, спасибо.
Будет третья часть? Уже март