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

IOS4

GUI

навигатор
закладки
закладка+навигатор
кнопка флажок

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

Пример двухуровневой навигации

Пример двухуровневой навигации без использования шаблона. Будет список элементов, по клику на элементе будет отображаться другая форма.

проект

Создадим оконный проект для iPhone.

File -> New Project -> Windows Based Application + iPhone -> Save As = iNavigator 

создание навигатора

В файл iNavigatorAppDelegate.h добавим ссылку и свойство для навигатора.


#import <UIKit/UIKit.h>

@interface iNavigatorAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
	UINavigationController * navigator;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController * navigator;

@end

В файле iNavigatorAppDelegate.m внесем следующие изменения


#import "iNavigatorAppDelegate.h"

@implementation iNavigatorAppDelegate

@synthesize window, navigator;


#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launch{
    [window addSubview: navigator.view]; // отображаем навигатор в окне
	
    [self.window makeKeyAndVisible];    
    return YES;
}
...

- (void)dealloc {
	[navigator release];
    [window release];
    [super dealloc];
}

@end

привязка контроллера к интерфейсу

В левой панели XCode сделаем двойной клик по файлу ResourcesMainWindow.xib. В результате запуститься Inteface Builder для редактирования формы.

Из библиотеки (Tools->Library) перетащим Navigation Controller в окно с заголовком "MainWindow.xib". В результате появится новое окно с заголовком "Navigation Controller".

Выберем в окне с заголовком "MainWindow.xib" элемент "I NAvigator App Delegate". Далее либо кликом правой мышкой по элементу вызываем диалог привязки либо открываем инспектор связей (Tools->Connection inspector).

В числе аутлетов мы видим navigator. Напротив него пустой кружок. Кликаем на кружок, и не отпуская клавиши мыши перетаскиваем курсор в окно с заголовком "Navigation Controller"

Сохраним изменения и выйдем из Interface Builder

подготовка первой формы

Сделаем первую форму в виде списка элементов. Добавим в проект новый контроллер

File -> Add -> New File -> IOS -> Cocoa Touch Class ->
  UIViewController subclass+UITableViewController+with xib ->
  Save As = TableColors

В файл TableColors.h добавим ссылку и свойство для массива элементов.


#import <UIKit/UIKit.h>

@interface TableColors : UITableViewController {

	NSMutableArray *colors;
}

@property (nonatomic, retain) NSMutableArray * colors;

@end

В файле TableColors.m сделаем следующие изменения.


#import "TableColors.h"


@implementation TableColors
@synthesize colors;

#pragma mark -
#pragma mark View lifecycle


- (void)viewDidLoad {
    [super viewDidLoad];

	colors= [[NSMutableArray alloc] initWithObjects: @"red", @"green", @"blue", @"white", 
			 @"gray", @"yellow", nil];
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {    
    return 1; // число секций
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    
    return [colors count]; // число элементов в секции
}



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // настройка элемента
    cell.textLabel.text = [colors objectAtIndex:indexPath.row];
    return cell;
}

- (void)dealloc {
	[colors release];
    [super dealloc];
}

делаем первую форму корневой

Открываем файл MainWindow.xib.

Переходим к окну с заголовком MainWindow. Выбираем там элемент

Navigation Controller -> View Controller (Root View Controller)

В инспекторе атрибутов (Tools->Attributes inspector) выбираем nib файл TableColors.

В инспекторе идентичности (Toold->Identity inspector) выбираем класс TableColors.

Сохраняем изменения и выходим из Interface Builder.

подготовка второй формы

Вторую форму сделаем попроще.

File -> Add -> New File -> IOS -> Cocoa Touch Class ->
  UIViewController subclass + with xib ->
  Save As = DetailColor

В файл DetailColor.h добавим ссылку и свойство для элемента интерфейса метки и для строки в которую будем сохранять название выбранного элемента на первой форме.


#import <UIKit/UIKit.h>

@interface DetailColor : UIViewController {

	UILabel* label;
	NSString * detail;
}

@property (nonatomic, retain) IBOutlet UILabel* label; 
@property (nonatomic, retain) NSString * detail;

@end

В файл DetailColor.m добавим следующие изменения:


#import "DetailColor.h"

@implementation DetailColor
@synthesize label, detail;
...

- (void)viewDidLoad {
    [super viewDidLoad];
	label.text=detail;
}

- (void)dealloc {
	[label release];
    [super dealloc];
}

Откроем файл DetailColor.xib и перетащим из библиотеки элемент Label на форму, т.е. окно с заголовком View.

Далее в окне с заголовком "DetailColor.xib" выберем владельца файла (File's Owner). Откроем инспектор связей и свяжем аутлет label с элементом интерфейса на форме (перетаскиваем курсор мыши из кружочка напротив аутлета в элемент интерфейса).

Сохраним изменения и выйдем из Inteface Builder.

вызов второй формы из первой

В файле TableColors.m сделаем следующие изменения.


//  что делать когда элемент выбран
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
    // создаем форму 
	DetailColor *detail = [[DetailColor alloc] init];
	
	// передаем данные 
	detail.detail =  [colors objectAtIndex:indexPath.row];
	
	// помещаем в стек контроллера навигации, т.е. отображаем
	[self.navigationController pushViewController:detail animated:YES];
	
	[detail release];	
}

В принципе detail можно попробовать сделать как свойство первой формы.


Рейтинг@Mail.ru