Розробка на iPhone (5): наш перший додаток (III)

En наша попередня стаття ми включили етикетку, TextField та кнопку в інтерфейс нашого додатку. Ми хотіли, щоб вміст Мітки був оновлений тим, що було введено в TextField при натисканні на кнопку. Ми (крок 1) створили проект і (крок 2) використали InterfaceBuilder для визначення екрана. Тепер ми продовжимо інші кроки, щоб залишити роботу програми.

Крок 3. Створіть змінні у ViewController.

У нас є свій інтерфейс правильно. Насправді, якби ми зробили Build & Go, ми могли б побачити, як у нас справи:

Але, очевидно, нічого не відбувається при натисканні кнопки, оскільки ми не зробили мінімально важливих подій. На цьому кроці 3 ми збираємось представити змінні та методи в HelloWorldViewController як в інтерфейсі (файл .h), так і в реалізації (файл .m). Для цього, як ми вже вказували в кінці попереднього допису, ми повинні знати, що TextField відповідає класу UITextField, а Label - класу UILabel. Ці 2 класи знаходяться в рамках UIKit.

Якщо ми не закрили та не зберегли Interface Builder, ми це робимо, і в XCode відкриваємо файл HelloWorldViewController.h. Код зараз матиме приблизно таке:

Ми вже розглядаємо деякі Objective-C. У цьому коді ми бачимо декларацію про імпорт бібліотеки UIKit, де знаходяться класи UILabel та UITextField. Ми бачимо, як оголошений інтерфейс, і що він поширюється від загального UIViewController UIKit.

До коду інтерфейсу ми включаємо такий код:

Тепер ми можемо пояснити, що ми зробили:

  • Ми оголосили в блоці @interface 2 атрибути типу UILabel та UITextField, з 2 іменами змінних * label і * textField відповідно. Попереду з'являється IBOutlet. Що це все? Ми пояснюємо себе. IBOutlet не є типом змінної; - це директива, яка допомагає Interface Builder дізнатися про існування цих змінних типу UILabel та UITextField. До речі, пам’ятайте, що в попередній статті ми давали вам хитрість, щоб знати типи змінних об’єктів керування (кнопки, мітка, текстове поле тощо) у Interface Builder. З іншого боку, проблема * перед назвою змінної може здивувати програмістів Java, не стільки тих, що на C ... але дізнайтеся, що саме так ви будете писати змінні екземпляра в Objective-C.
  • Оголошено властивості UILabel та UITextField. неатомних і зберегти ми поки не побачимо, це пов'язано з управлінням пам'яттю.
  • Ми бачимо, що ми оголошуємо метод updateText. Перед ним є знак -, що вказує на те, що це метод екземпляра, а не метод класу (для них пояснюється знак +). Ми не можемо це пояснювати, оскільки це базове об'єктно-орієнтоване програмування ... Цей метод нічого не повертає (тобто void) і отримує параметр типу id. В основному це стосується ідентифікатора об’єкта, який спричинить виклик нашого методу updateTexto, який оновить значення мітки. Ми можемо здогадуватися, оскільки цей контроль буде самою кнопкою ...

Як тільки це буде зроблено, ми закінчимо з кроком 3.


Крок 4. Прив’язати елементи керування поданням до змінних контролера.

Якщо ми розглянемо, з одного боку, ми розробили наш інтерфейс з Interface Builder, а з іншого, у нас є змінні, пов'язані з цими елементами керування в HelloWorldViewController.h (інтерфейс класу контролера HelloWorldViewController.m). Однак, досі не існує взаємозв'язку між поданням і контролером, тобто ми не давали жодних вказівок щодо зв'язку, наприклад, текстового поля, яке ми розробляємо в Interface Builder, зі змінною типу UITextField, яку ми помістили в клас. Зараз ми будемо виконувати це завдання. Ми знову відкриваємо Interface Builder, натискаючи HelloWorldViewController.xib, клацаємо по текстовому полі, а на палітрі Inspector переходимо до другої вкладки (Text Field Connections). Ми бачимо, що є розділ, що називається "Довідкові точки", і там нічого не позначено. Це означає, що на даний момент Interface Builder не знає жодного зв’язку між цим текстовим полем та IBOutlet (Interface Builder Outlet) класу ... але у нас є UITextField IBOutlet у нашому HelloWorldViewController, тож давайте пов’яжемо його.

Для цього, як ми бачимо на малюнку, натиснувши на маленьке коло поруч із пунктом «Нова розетка для посилань», ми перетягуємо до власника файлу вікна, що називається HelloWorldViewController.xib. Це дозволить нам вибрати 2 варіанти, view (повний перегляд) і textField (наша змінна). Очевидно, ми вибираємо textField, і, таким чином, ми пов'язуємо наше текстове поле зі змінною свого типу UITextField. До речі, власник файлу або власник файлу ні більше, ні менше, ніж наш клас контролера ...

Ми повторюємо операцію з міткою, пов'язуючи її з міткою змінної нашого контролера. А з кнопкою це щось інше. У цьому випадку ми збираємось пов’язати це з нашою операцією updateTexto, але для певної події. Зробіть це за допомогою події «Touch Up Inside» та виберіть наш метод updateTexto:

І таким чином ми вже пов’язали елементи управління, які ми визначили за допомогою Interface Builder, і змінні, які ми помістили в контролер. Закриваємо Interface Builder, зберігаючи все, і переходимо до останнього кроку, повертаючись до XCode.

Крок 5. Останні розробки.

У XCode ми відкриваємо HelloWorldViewController.my і ставимо такий код, щоб наш клас виглядав так:

Якщо ми уважно розглянемо, ми просто поставили блок @synthesize і реалізацію методу, оголошеного в інтерфейсі .h, updateTexto. Під цим кодом у вас буде багато кодованого коду.

Рядок @synthesize робить щось подібне до генерації типового геттера / сеттера (пристосування / мутатори), типового для мов OO (інкапсуляція). Вони потрібні нам, щоб вміст потрапив до контролера, наприклад, текстового поля.

Як бачите, метод updateTexto просто оновлює текст нашої мітки вмістом текстового поля. Ми закінчили.

Тепер ми просто робимо Build & Go, і ви побачите, що коли ви вводите текстовий рядок і натискаєте кнопку, вміст мітки оновлюється. У наступній статті ми запропонуємо вдосконалення нашої програми.


Слідкуйте за нами в Новинах Google

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Пітер - сказав він

    Дуже хороший підручник, дуже зрозумілий і простий.

  2.   рубдотоком - сказав він

    Ну, я, мабуть, дуже диня 🙁, бо це у мене не працює. Я захопив значення у рядку, і він бере текст, але він не призначає його мітці, принаймні він не малює його, тому що я намагаюся побачити label.text, і це повідомляє мені, що виходить за рамки ...

  3.   leo2279 - сказав він

    Відмінні ваші підручники, це справді дуже добре пояснює цю розробку для iphone, сподіваюся, ви продовжуватимете публікувати більше підручників.

    що стосується

  4.   Маріано - сказав він

    Привіт, все круто, але це не працює. Щоб це працювало, мені довелося пов’язати вигляд конструктора інтерфейсу з видом у кубі, як ви вчите робити з текстовим полем та міткою. За решту, велике спасибі.