Курсы по мобильной разработке. 2 лекция. Построение...

Post on 29-Nov-2014

1.888 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Построение интерфейсовViews, controllers

Разработка под iOS

Лекция 2

Глеб Тарасов

Вспомним прошлое занятие

Что значит минус перед определением метода?

- (void)deleteProfile;

Что значит минус перед определением метода?

Экземплярный метод

- (void)deleteProfile;

Из чего состоит свойство?@property(nonatomic) NSInteger age;

Из чего состоит свойство?

getter, setter, внутренняя переменная

@property(nonatomic) NSInteger age;

Как создать объект?

User *user = ...

Как создать объект?

User *user = [[User alloc] init];

User *user = ...

Какой базовый класс для всех объектов в Objective-C?

Какой базовый класс для всех объектов в Objective-C?

NSObject

Как вызвать метод у объекта user с параметрами «topic», «text»

- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;

Как вызвать метод у объекта user с параметрами «topic», «text»

[user postCommentWithTopic:@"topic" andText:@"text"];

- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;

View

UIView@property(nonatomic) CGRect frame;@property(nonatomic) CGRect bounds;@property(nonatomic) CGPoint center;

@property(nonatomic,readonly) UIView *superview;@property(nonatomic,readonly,copy) NSArray *subviews;

- (void)removeFromSuperview;- (void)addSubview:(UIView *)view;- (void)bringSubviewToFront:(UIView *)view;- (void)sendSubviewToBack:(UIView *)view;

@property(nonatomic,copy) UIColor *backgroundColor;@property(nonatomic) CGFloat alpha;@property(nonatomic,getter=isHidden) BOOL hidden;

Иерархия UIView

Стандартные контролы

Controller

UIViewController// The getter first invokes [self loadView] if the view hasn't been set yet. // Subclasses must call super if they override the setter or getter.@property(nonatomic,retain) UIView *view;

// This is where subclasses should create their custom view hierarchy // if they aren't using a nib. // Should never be called directly.- (void)loadView;

- (void)viewWillUnload __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);// Called after the view has been loaded. For view controllers created in code, // this is after -loadView. For view controllers unarchived from a nib, // this is after the view is set.- (void)viewDidLoad;

// Called after the view controller's view is released and set to nil. // For example, a memory warning which causes the view to be purged. // Not invoked as a result of -dealloc.- (void)viewDidUnload __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

- (BOOL)isViewLoaded __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

Interface Builder(демонстрация)

События

target, action- (void)viewDidLoad{ [super viewDidLoad];

[self.button addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];}

- (void)buttonClicked{ NSLog(@"buttonClicked");}

delegate

- (void)viewDidLoad{ [super viewDidLoad]; self.tableView.delegate = self;}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"select row");}

@interface ViewController : UIViewController<UITableViewDelegate>

Отрывок UIScrollViewDelegate@protocol UIScrollViewDelegate<NSObject>

@optional

// any offset changes- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

// any zoom scale changes- (void)scrollViewDidZoom:(UIScrollView *)scrollView __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_2);

// called on start of dragging // (may require some time and or distance to move)- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

...

notificationsNSNotificationCenter *center = [NSNotificationCenter defaultCenter];[center postNotificationName:@"UserChanged" object:nil];

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];[center addObserver:self selector:@selector(userChanged) name:@"UserChanged" object:nil];

- (void)userChanged{ NSLog(@"Событие произошло");}

Событие случилось:

Ловим событие:

MVC

Controller

ModelView

MVC

Controller

ModelView

outlets

MVC

Controller

ModelView

outlets

MVC

Controller

ModelView

delegates

outlets

MVC

Controller

ModelView

delegates

outletstarget,action

MVC

Controller

ModelView

delegates

outletstarget,action

MVC

Controller

ModelView

delegates

outletsnotificationstarget,action

Демонстрация

• UIView

• UIViewController

• UIButton

• UILabel

• UIImageView

Что мы сегодня узнали?

Какой класс базовый для всех интерфейсных элементов?

Какой класс базовый для всех интерфейсных элементов?

UIView

Какой класс базовый для всех контроллеров?

Какой класс базовый для всех контроллеров?

UIViewController

Как контроллер получает ссылку на view в Interface

Builder?

Как контроллер получает ссылку на view в Interface

Builder?

через IBOutlet

Как контроллер узнает об изменениях в модели?

Как контроллер узнает об изменениях в модели?

через notification-ы

Как view сообщает контроллеру о действиях

пользователя?

Как view сообщает контроллеру о действиях

пользователя?

через target/action и delegate

Темы для подготовкиНаписать приложение-демонстрацию

UIWebView(например, простой

браузер: адресная строка,

кнопки назад/вперед)

Темы для подготовкиНаписать приложение-демонстрацию

UIScrollView

(например, прокрутка нескольких картинок с пагинацией и без)

Темы для подготовкиНаписать приложение-демонстрацию

MKMapView

(например, карта с корпусами МГУ)

Темы для подготовкиНаписать приложение-демонстрацию

UITableView(например, вывести список строк из файла в таблицу)

top related