Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,843 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Разработка под iOS Лекция 2Построение интерфейсов Views, controllers Глеб Тарасов
  2. 2. Вспомним прошлое занятие
  3. 3. Что значит минус передопределением метода? - (void)deleteProfile;
  4. 4. Что значит минус передопределением метода? - (void)deleteProfile; Экземплярный метод
  5. 5. Из чего состоит свойство? @property(nonatomic) NSInteger age;
  6. 6. Из чего состоит свойство? @property(nonatomic) NSInteger age;getter, setter, внутренняя переменная
  7. 7. Как создать объект? User *user = ...
  8. 8. Как создать объект? User *user = ...User *user = [[User alloc] init];
  9. 9. Какой базовый класс для всех объектов в Objective-C?
  10. 10. Какой базовый класс для всех объектов в Objective-C? NSObject
  11. 11. Как вызвать метод у объекта user с параметрами «topic», «text»- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;
  12. 12. Как вызвать метод у объекта user с параметрами «topic», «text»- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;[user postCommentWithTopic:@"topic" andText:@"text"];
  13. 13. View
  14. 14. 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;
  15. 15. Иерархия UIView
  16. 16. Стандартные контролы
  17. 17. Controller
  18. 18. UIViewController// The getter first invokes [self loadView] if the view hasnt 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 arent 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 controllers 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);
  19. 19. Interface Builder (демонстрация)
  20. 20. События
  21. 21. target, action- (void)viewDidLoad{ [super viewDidLoad]; [self.button addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];}- (void)buttonClicked{ NSLog(@"buttonClicked");}
  22. 22. delegate@interface ViewController : UIViewController<UITableViewDelegate>- (void)viewDidLoad{ [super viewDidLoad]; self.tableView.delegate = self;}- (void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"select row");}
  23. 23. Отрывок 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;...
  24. 24. notificationsСобытие случилось:NSNotificationCenter *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(@"Событие произошло");}
  25. 25. MVC ControllerView Model
  26. 26. MVC Controller outletsView Model
  27. 27. MVC Controller outletsView Model
  28. 28. MVC Controller delegates outletsView Model
  29. 29. MVC Controller delegatestarget,action outletsView Model
  30. 30. MVC Controller delegatestarget,action outletsView Model
  31. 31. MVC Controller delegatestarget,action notifications outletsView Model
  32. 32. Демонстрация• UIView• UIViewController• UIButton• UILabel• UIImageView
  33. 33. Что мы сегодня узнали?
  34. 34. Какой класс базовый для всех интерфейсных элементов?
  35. 35. Какой класс базовый для всех интерфейсных элементов? UIView
  36. 36. Какой класс базовый для всех контроллеров?
  37. 37. Какой класс базовый для всех контроллеров? UIViewController
  38. 38. Как контроллер получаетссылку на view в Interface Builder?
  39. 39. Как контроллер получаетссылку на view в Interface Builder? через IBOutlet
  40. 40. Как контроллер узнает об изменениях в модели?
  41. 41. Как контроллер узнает об изменениях в модели? через notification-ы
  42. 42. Как view сообщаетконтроллеру о действиях пользователя?
  43. 43. Как view сообщает контроллеру о действиях пользователя?через target/action и delegate
  44. 44. Темы для подготовкиНаписать приложение- демонстрацию UIWebView (например, простой браузер: адресная строка, кнопки назад/вперед)
  45. 45. Темы для подготовки Написать приложение-демонстрацию UIScrollView(например, прокрутканескольких картинок с пагинацией и без)
  46. 46. Темы для подготовкиНаписать приложение- демонстрацию MKMapView (например, карта с корпусами МГУ)
  47. 47. Темы для подготовкиНаписать приложение- демонстрациюUITableView(например, вывести список строк из файла в таблицу)

×