Разработка приложений для iOS             Лекция 2MVC,View, Controllers                               Глеб Тарасов
Приватные свойства или поля?http://stackoverflow.com/questions/411048/differences-between-private-fields-and-private-propert...
Вспомним прошлое     занятие
Какой метод управления памятью    используется в языке Си?
Какой метод управления памятью    используется в языке Си? Ручное выделение памяти, удаление
Какой метод управления памятью    используется в языке Си? Ручное выделение памяти, удаление        А в Objective-C?
Какой метод управления памятью    используется в языке Си? Ручное выделение памяти, удаление        А в Objective-C?      ...
Чем отличаются строки "string1" и @"string2"
Чем отличаются строки "string1" и @"string2"Char*      NSString*
Как сохранить число 5 в массив?
Как сохранить число 5 в массив?        NSNumber
Что такое «strong» и «weak»?   Чем они отличаются?
Что такое «strong» и «weak»?   Чем они отличаются?       модификаторы у свойств,  strong увеличивает счетчик ссылок,      ...
Что значит минусперед определением   - (void)deleteProfile;
Что значит минусперед определением   - (void)deleteProfile;Экземплярный метод
Из чего состоит    свойство?@property(nonatomic) NSInteger age;
Из чего состоит      свойство?  @property(nonatomic) NSInteger age;getter, setter, внутренняя        переменная
Как создать объект?    User *user = ...
Как создать объект?          User *user = ...User *user = [[User alloc] init];
Какой базовый классдля всех объектов в    Objective-C?
Какой базовый классдля всех объектов в    Objective-C?     NSObject
Как вызвать метод у          объекта user с       параметрами «topic»,             «text»- (void)postCommentWithTopic:(NSS...
Как вызвать метод у          объекта user с       параметрами «topic»,             «text»- (void)postCommentWithTopic:(NSS...
MVC       ControllerView                Model
View
UIView@property(nonatomic) CGRect frame;@property(nonatomic) CGRect bounds;@property(nonatomic) CGPoint center;@property(n...
Иерархия UIView
Стандартные контролы
Controller
UIViewController// The getter first invokes [self loadView] if the view hasnt been set yet.// Subclasses must call super i...
@interface ViewController : UIViewController@end@implementation ViewController- (void)viewDidLoad{    [super viewDidLoad];...
Наполнение View     В коде                                  Interface Builder- (void)viewDidLoad{    [super viewDidLoad]; ...
Interface Builder  (демонстрация)
События
target, action- (void)viewDidLoad{    [super viewDidLoad];    [self.button addTarget:self                    action:@selec...
delegate@interface ViewController : UIViewController<UITableViewDelegate>- (void)viewDidLoad{    [super viewDidLoad];    s...
Отрывок        UIScrollViewDelegate@protocol UIScrollViewDelegate<NSObject>@optional// any offset changes- (void)scrollVie...
notificationsСобытие случилось:NSNotificationCenter *center = [NSNotificationCenter defaultCenter];[center postNotification...
MVC       ControllerView                Model
MVC       Controller        outletsView                Model
MVC       Controller        outletsView                Model
MVC              Controller  delegates               outletsView                       Model
MVC                  Controller      delegatestarget,action                   outlets  View                         Model
MVC                  Controller      delegatestarget,action                   outlets  View                         Model
MVC                  Controller      delegatestarget,action                  notifications                   outlets  View ...
Демонстрация
Что мы сегодня узнали?
Какой класс базовый      для всех   интерфейсных    элементов?
Какой класс базовый      для всех   интерфейсных    элементов?      UIView
Какой класс базовый      для всех   контроллеров?
Какой класс базовый      для всех   контроллеров?  UIViewController
Как контроллер получаетссылку на view в Interface        Builder?
Как контроллер получаетссылку на view в Interface        Builder?     через IBOutlet
Как контроллер узнает   об изменениях в       модели?
Как контроллер узнает   об изменениях в       модели?  через notification-ы
Как view сообщает  контроллеру о    действиях  пользователя?
Как view сообщает      контроллеру о        действиях      пользователя?через target/action и delegate
Темы для подготовки       Написать     приложение-    демонстрацию  UIWebView (например, простой       браузер:   адресная...
Темы для подготовкиНаписать приложение-демонстрацию        UIScrollView    (например,     прокрутка    нескольких     карт...
Темы для подготовки      Написать    приложение-   демонстрациюMKMapView  (например, карта суказанием на ваш дом)
Темы для подготовки    Написать  приложение- демонстрациюUITableView (например, вывести   список строк из  файла в таблицу)
Спасибо     Глеб Тарасов     gleb34@gmail.com     twitter.com/pilot34
Upcoming SlideShare
Loading in …5
×

Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers

2,121 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,121
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers

  1. 1. Разработка приложений для iOS Лекция 2MVC,View, Controllers Глеб Тарасов
  2. 2. Приватные свойства или поля?http://stackoverflow.com/questions/411048/differences-between-private-fields-and-private-properties
  3. 3. Вспомним прошлое занятие
  4. 4. Какой метод управления памятью используется в языке Си?
  5. 5. Какой метод управления памятью используется в языке Си? Ручное выделение памяти, удаление
  6. 6. Какой метод управления памятью используется в языке Си? Ручное выделение памяти, удаление А в Objective-C?
  7. 7. Какой метод управления памятью используется в языке Си? Ручное выделение памяти, удаление А в Objective-C? Подсчет ссылок
  8. 8. Чем отличаются строки "string1" и @"string2"
  9. 9. Чем отличаются строки "string1" и @"string2"Char* NSString*
  10. 10. Как сохранить число 5 в массив?
  11. 11. Как сохранить число 5 в массив? NSNumber
  12. 12. Что такое «strong» и «weak»? Чем они отличаются?
  13. 13. Что такое «strong» и «weak»? Чем они отличаются? модификаторы у свойств, strong увеличивает счетчик ссылок, weak нет
  14. 14. Что значит минусперед определением - (void)deleteProfile;
  15. 15. Что значит минусперед определением - (void)deleteProfile;Экземплярный метод
  16. 16. Из чего состоит свойство?@property(nonatomic) NSInteger age;
  17. 17. Из чего состоит свойство? @property(nonatomic) NSInteger age;getter, setter, внутренняя переменная
  18. 18. Как создать объект? User *user = ...
  19. 19. Как создать объект? User *user = ...User *user = [[User alloc] init];
  20. 20. Какой базовый классдля всех объектов в Objective-C?
  21. 21. Какой базовый классдля всех объектов в Objective-C? NSObject
  22. 22. Как вызвать метод у объекта user с параметрами «topic», «text»- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;
  23. 23. Как вызвать метод у объекта user с параметрами «topic», «text»- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;[user postCommentWithTopic:@"topic"andText:@"text"];
  24. 24. MVC ControllerView Model
  25. 25. View
  26. 26. 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;
  27. 27. Иерархия UIView
  28. 28. Стандартные контролы
  29. 29. Controller
  30. 30. 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 incode,// 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);- (BOOL)isViewLoaded __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
  31. 31. @interface ViewController : UIViewController@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; CGRect rect = CGRectMake(20, 20, 100, 100); UILabel *l = [[UILabel alloc] initWithFrame:rect]; l.text = @"text"; [self.view addSubview:l];}- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"появился");}- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; NSLog(@"пропал");}@end
  32. 32. Наполнение View В коде Interface Builder- (void)viewDidLoad{ [super viewDidLoad]; CGRect rect = CGRectMake(20, 20, 100, 100); UILabel *l = [[UILabel alloc] initWithFrame:rect]; l.text = @"text"; [self.view addSubview:l];}
  33. 33. Interface Builder (демонстрация)
  34. 34. События
  35. 35. target, action- (void)viewDidLoad{ [super viewDidLoad]; [self.button addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];}- (void)buttonClicked{ NSLog(@"buttonClicked");}
  36. 36. delegate@interface ViewController : UIViewController<UITableViewDelegate>- (void)viewDidLoad{ [super viewDidLoad]; self.tableView.delegate = self;}- (void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"select row");}
  37. 37. Отрывок 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;...
  38. 38. 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(@"Событие произошло");}
  39. 39. MVC ControllerView Model
  40. 40. MVC Controller outletsView Model
  41. 41. MVC Controller outletsView Model
  42. 42. MVC Controller delegates outletsView Model
  43. 43. MVC Controller delegatestarget,action outlets View Model
  44. 44. MVC Controller delegatestarget,action outlets View Model
  45. 45. MVC Controller delegatestarget,action notifications outlets View Model
  46. 46. Демонстрация
  47. 47. Что мы сегодня узнали?
  48. 48. Какой класс базовый для всех интерфейсных элементов?
  49. 49. Какой класс базовый для всех интерфейсных элементов? UIView
  50. 50. Какой класс базовый для всех контроллеров?
  51. 51. Какой класс базовый для всех контроллеров? UIViewController
  52. 52. Как контроллер получаетссылку на view в Interface Builder?
  53. 53. Как контроллер получаетссылку на view в Interface Builder? через IBOutlet
  54. 54. Как контроллер узнает об изменениях в модели?
  55. 55. Как контроллер узнает об изменениях в модели? через notification-ы
  56. 56. Как view сообщает контроллеру о действиях пользователя?
  57. 57. Как view сообщает контроллеру о действиях пользователя?через target/action и delegate
  58. 58. Темы для подготовки Написать приложение- демонстрацию UIWebView (например, простой браузер: адресная строка,кнопки назад/вперед)
  59. 59. Темы для подготовкиНаписать приложение-демонстрацию UIScrollView (например, прокрутка нескольких картинок с пагинацией и без)
  60. 60. Темы для подготовки Написать приложение- демонстрациюMKMapView (например, карта суказанием на ваш дом)
  61. 61. Темы для подготовки Написать приложение- демонстрациюUITableView (например, вывести список строк из файла в таблицу)
  62. 62. Спасибо Глеб Тарасов gleb34@gmail.com twitter.com/pilot34

×