class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

IOS4

подробные примеры

обзор
cg геометрия

ресурсы ...

форма ...

главное окно
контроллер
диалоги

виджеты

навигатор
закладки
изображение
кнопки
сегменты
таблица/список
поле ввода текста
редактор текста

Справочник по IOS GUI

Навигация

Стандартная навигация поддерживается следующими классами:

Каждый контроллер имеет свойства:


// какой-то контроллер для корневого элемента навигации
CatView* navRoot = [[CatView alloc] init];

// создаем навигатор с корневым элементом tab1 
UINavigationController *nav = 
    [[UINavigationController alloc] initWithRootViewController: navRoot];  

nav.navigationBarHidden=NO;           // панель видима/невидима
nav.navigationBar.tintColor = [UIColor orangeColor]; // оттенок панели

// нужно, если навигатор будет вставлен в закладку    
nav.title=@"my title";
nav.tabBarItem.image = [UIImage imageNamed:@"icon_tab_apoi.png"];

...
[navRoot release];
[nav release];

Элемент навигации настраивается внутри соответствующего контроллера, например в viewDidLoad


// контроллер представляющий одно из окон навигации
- (void)viewDidLoad {
...

// готовим правую кнопку, без текста но с иконкой 
 UIBarButtonItem *btAddComment =
         [[UIBarButtonItem alloc]
                initWithImage: [UIImage imageNamed:@"icon_test30x30"] 
                style:UIBarButtonItemStyleBordered
                target:self action: nil];
                
// готовим левую кнопку, задаем обработчик нажатия
UIBarButtonItem *btAddCompany =
         [[UIBarButtonItem alloc]
                initWithTitle:@"компания" 
                style:UIBarButtonItemStyleBordered
                target:self 
                action: @selector(onAddCompany)];                    

// готовим кнопку назад, она может использоваться следующим элементом навигации
// для возвращения обратно, по умолчанию заголовок - заголовок окна 
UIBarButtonItem *backButton=
         [[UIBarButtonItem alloc]
                initWithTitle:@"назад" 
                style:UIBarButtonItemStyleBordered
                target:nil 
                action:nil];

self.navigationItem.rightBarButtonItem = btAddComment;
self.navigationItem.leftBarButtonItem = btAddCompany;
self.navigationItem.backBarButtonItem=backButton;
self.navigationItem.title = @"заголовок"; // надпись по центру
// необязательная надпись наверху панели (над кнопками и заголовком)
self.navigationItem.prompt = @"добавление"; 
// если кнопку назад надо скрыть
self.navigationItem.hidesBackButton = YES;

[backButton release];
[btAddCompany release];
[btAddComment release];
}


// обработчик нажатия кнопки на панели
-(void) onAddCompany {
...
}

Левые/правые кнопки и заголовок можно заменить на другие виджеты. UIBarButtonItem не совместим с UIView, поэтому для замены заголовка одной кнопкой похожей на UIBarButtonItem используется UISegmentedControl с одним сегментом.


// подготавливаем сегментный контрол 
// (выглядит наподобие закладок - несколько кнопок вместе)
UISegmentedControl*segm=  
     [[UISegmentedControl alloc] initWithFrame: CGRectMake(0,0,170,30)];
segm.segmentedControlStyle = UISegmentedControlStyleBar;
[segm insertSegmentWithTitle: @"закладка 0" atIndex: 0 animated: NO];
[segm insertSegmentWithTitle: @"закладка 1" atIndex: 1 animated: NO];
segm.selectedSegmentIndex=0; 
...
self.navigationItem.titleView = segm; // устанвливаем его вместо заголовка

//==========================================================
NSArray* btRight = [[NSArray alloc] // массив кнопок
     initWithObjects:btAddComment, btAddCompany,  nil];

// готовим вложенную панель кнопок
UIToolbar* subPanel = [[UIToolbar alloc] 
     initWithFrame:CGRectMake(0, 0, 133, 44)];

[subPanel setItems: btRight]; // добавляем кнопки в панель

self.navigationItem.rightBarButtonItem = 
     [[UIBarButtonItem alloc] initWithCustomView:tools];

//------------------------------------------------ 
// начиная с iOS5 вложенную панель предыдущего примера  
// можно заменить на массивы левых/правых кнопок
[self.navigationItem setRightBarButtonItems:btRight];

//------------------------------------------------
// для левых кнопок нужно доп. разрешение
self.leftItemsSupplementBackButton =YES;
[self.navigationItem setLeftBarButtonItems:btRight];

// не забываем освобождать объекты
...

Пошаговый пример приложения с навигацией с использованием IB 3.0

класс UINavigationController

Основные свойства и методы:

класс UINavigationBar


float deviceVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (deviceVersion >= 5.0)
  [self.navigationController.navigationBar 
         setBackgroundImage:[UIImage imageNamed:@"bg_navbar.png"] 
         forBarMetrics:UIBarMetricsDefault];

класс UINavigationItem

Класс описывает элемент навигации. Ниже приведены его методы и свойства:


Рейтинг@Mail.ru