Мое «второе» приложение для iOS

Решив попытаться программировать для iOS я пересмотрел кучу ресурсов в поисках документации, описаний, уроков, но чаще всего попадались либо уроки на тему «Создание первого приложения Hello World», либо какие-то узкоспециализорованные статьи для решения конкретных задач. Поэтому начав кое как разбираться в этой системе я решил написать статью для новичков о создании чуть более сложного, чем Hello world приложения. Это приложение состоит из двух видовых панелей и одного Toolbar с кнопкой, по нажатии которой эти самые панели будут меняться местами. Для создания использован Xcode 4.1

Итак начнем с начала. Xcode предоставляет несколько шаблонов для создания приложений, но мы не будем искать легких путей и создадим приложение с наиболее скудным шаблоном, чтобы в последствии самостоятельно собрать в кучу все детали.
Зайдем в меню File -> New -> New project и выберем проект типа Window based application
Image Hosted by ImageShack.us
Дадим нашем проекту имя на ваше усмотрение, выберем в качестве устройства iPhone и сбросим все галочки, если они там были установлены.
Image Hosted by ImageShack.us
В итоге получаем во такую примерно картину
Image Hosted by ImageShack.us
Теперь нам необходимо добавить к нашему проекту еще 3 класса — это будут два вида, которые мы будем менять и класс контроллера, которому будет принадлежать Toolbar, он и будет менять виды. Для этого мы нажимаем правой кнокой в окошке Project Navigator (это слева, где выведен список файлов нашего проекта), в открывшемся меню выбираем New file, открывается, уже знакомое окно создания файла и на этот раз мы выбираем UIView Controller Subclass.
Image Hosted by ImageShack.us
Нажимаем «Next», убираем все галочки для того чтобы автоматически не создавались xib файлы, их мы позже добавим в проект самостоятельно.
Image Hosted by ImageShack.us
Выбираем имя, я назвал его controllerView
Image Hosted by ImageShack.us
Аналогично создаем еще два класса firstView и secondView. В итоге мы должны добавить 3 пары файлов с расширениями .h и .m. Теперь добавим два xib файла, в которых, как раз, и будет содержаться внешний вид тех двух видов, которые мы будем менять местами. Для этого снова нажимаем правой кнопкой в окошке Project Navigator, в открывшемся меню выбираем New file и создаем файл типа View.
Image Hosted by ImageShack.us
Выбираем в качестве устройства iPhone и называем их firstView и secondView.

Теперь, когда все необходимые файлы созданы, начнем их собирать воедино, чтобы получить работающее приложение.
Для начала изменим файлы myViewAppAppDelegate.h и myViewAppAppDelegate.m в которых мы добавим в основное окно экземпляр нашего контроллера controllerView, для этого добавим класс controllerView в файл myViewAppAppDelegate.h, создадим экземпляр класса и добавим его в основное вид, уже в файле myViewAppAppDelegate.m.

Файл myViewAppAppDelegate.h
#import <UIKit/UIKit.h>
@class controllerView; //добавляем класс контроллера

@interface myViewAppAppDelegate : NSObject <UIApplicationDelegate>{
    UIWindow *window;
    controllerView *ControllerView; //объявляем экзепляр класса
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet controllerView *ControllerView;

@end


Файл myViewAppAppDelegate.m
#import "myViewAppAppDelegate.h"
#import "controllerView.h"

@implementation myViewAppAppDelegate

@synthesize window = _window;
@synthesize ControllerView;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self.window addSubview:ControllerView.view]; //добавляем контроллер в основное окно
    [self.window makeKeyAndVisible];
    return YES;
}

//Здесь находятся все функции созданные в этом файле автоматически, их мы не меняли

- (void)dealloc
{
    [ControllerView release]; //уничтожаем указатель
    [_window release];
    [super dealloc];
}

@end

Также подготовим файл controllerView.h, опишем там все необходимые нам классы и методы, чтобы в последствии связать их с нашими объектами.

Файл controllerView.h
#import <UIKit/UIKit.h>
@class firstView;      //класс первого вида
@class secondView; //класс второго вида

@interface controllerView : UIViewController {
    firstView *FirstView; 
    secondView *SecondView;
}

@property (retain, nonatomic) firstView *FirstView;
@property (retain, nonatomic) secondView *SecondView;

- (IBAction)changeView:(id)sender; //метод для смены видов

@end


Теперь в файл с основным окном MainWindow.xib необходимо добавить сам объект контроллера и связать его с нашим классом. Для этого открываем файл MainWindow.xib, в библиотеке (справа внизу) выбираем элемент View Controller
Image Hosted by ImageShack.us
и перетаскиваем его поверх основного вида
Image Hosted by ImageShack.us
После этого в колонке пиктограмм слева должна добавиться новая пиктограмма, соответствующая нашему контроллеру. Нам необходимо связать наш контроллер с нашим классом controllerView, для этого выделяем объект контроллера и в окне Identity Inspector (правое верхнее окно, см. предыдущий рисунок) из списка классов выбирает controllerView. Для проверки наведем курсор на пиктограмму нашего контроллера в колонке пиктограмм и там должна появиться подпись Controller View.
Теперь берем объект View в библиотеке и перетаскиваем его на наш контроллер.
Image Hosted by ImageShack.us
И устанавливаем Toolbar, для этого в библиотеке берем объект Toolbar в библиотеке и устанавливаем его в верхней части нашего объекта View. Дважды нажав на кнопку, меняем ее название на «Смена видов».
Image Hosted by ImageShack.us
Свяжем объект кнопки с, объявленным нами методом, для этого выделите кнопку, зажмите control и, нажав левую кнопку мыши, перетащите линию на пиктограмму Files's owner и выберите из открывшегося списка метод changeView. Затем выберем иконку My View App App Delegate, зажмем control и левуй кнопку мыши и перетащим линию на иконку Controller View и выберем из открывшегося списка controllerView. Основная часть урока уже позади, теперь еще немного кода, пару связей и все готово.
Изменим файл controllerView.m, добавим туда код метода для смены видов

Файл controllerView.m
#import "controllerView.h"
#import "firstView.h"
#import "secondView.h"

@implementation controllerView
@synthesize FirstView;
@synthesize SecondView;

- (void) viewDidLoad { //метод выполняется при загрузке основного вида
    firstView *F1 = [[firstView alloc]  //инициализируем первый вид
                    initWithNibName:@"firstView" bundle:nil];
                    self.FirstView = F1;
                    [self.view insertSubview:F1.view atIndex:0]; //делаем его активным
                    [F1 release];
    secondView *S1 = [[secondView alloc]  //инициализируем второй вид
                      initWithNibName:@"secondView" bundle:nil];
                     self.SecondView = S1;
                    [S1 release];
    [super viewDidLoad];
}

- (IBAction)changeView:(id)sender{
    if (self.FirstView.view.superview == nil) { //если первый вид не активен
        [SecondView.view removeFromSuperview]; //прячем второй вид
        [self.view insertSubview:FirstView.view atIndex:0]; //делаем активным первый
    }
    else
    {
        [FirstView.view removeFromSuperview]; //прячем первый вид
        [self.view insertSubview:SecondView.view atIndex:0]; //делаем активным второй
    }
}


//Здесь находятся все функции созданные в этом файле автоматически, их мы не меняли

- (void) dealloc {
    [FirstView release]; 
    [SecondView release];
    [super dealloc];
}
@end

Теперь осталось довести до ума наши файлы видов. Выберите файл firstView.xib и добавьте туда место для нашего Toolbar, чтобы он его не перекрывал. Для этого выделите основной вид и окне Simulated Metrics напротив Top Bar выберите Navigation Bar.
Image Hosted by ImageShack.us
Затем сделаем этот вид экземпляром класса firstView, для этого, как мы уже делали в основном окне, в окошке Identity Inspector из списка классов выбирает firstView.
Image Hosted by ImageShack.us
И последний штрих. Выбираем иконку File's Owner зажимаем control и левую кнопку мыши и перетаскиваем линию на наш вид, в открывшемся меню выберем View. Далее повторяем эту же процедуру для файла secondView.xib, только его привязываем к классу secondview. Также вносим изменения во внешний вид нашего первого и второго видов, чтоб мы могли отличать их, когда они будут меняться, добавляем какие-нибудь кнопочки или картинки.
На этом все, проект можно запускать и если вы все сделали правильно, то у вас будет приложение с одной действующей кнопкой, которая меняет местами два view.

Идею урока подсмотрел в книге «Beginning iPhone 4 Development Exploring the iOS SDK» David Mark, Jeff LaMarche, Jack Nutting, но реализация и описание мое.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 11

  • НЛО прилетело и опубликовало эту надпись здесь
      0
      так я вроде выделил тегами или его еще как-то надо выделять?
        0
        в смысле выделил тегами code
          0
          используй <source lang="язык"></source>
            0
            Спасибо, все поправил
      • НЛО прилетело и опубликовало эту надпись здесь
          0
          Спасибо большое, интересный сайт, странно, что раньше на глаза не попадалася
            +1
            И мне ссылочку киньте.
            И да, здесь можно постить ссылки на другие ресурсы.
            • НЛО прилетело и опубликовало эту надпись здесь
            0
            Уважаемые хабралюди, вы если минусуете, так хоть напишите что не так. Всегда интересно послушать конструктивную критику.
              0
              Огромная благодарность автору! Очень подробно всё описано.
              Пишите ещё различные простые примерчики, если это возможно.
              Спасибо!

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

              Самое читаемое