Views
Разработка приложений для iOS
Лекция 3
Глеб Тарасов
gleb34@gmail.com
Вспомним прошлое
занятие
Чем отличаются строки 	

"string1" и @"string2"
Чем отличаются строки 	

"string1" и @"string2"
Char* NSString*
C Objective-C
Как сохранить число 5 в массив?
Как сохранить число 5 в массив?
NSNumber
!
@(5)
Что значит минус
перед определением
- (void)deleteProfile;
Что значит минус
перед определением
Метод объекта, а не класса
- (void)deleteProfile;
Как создать объект?
User *user = ...
Как создать объект?
User *user = [[User alloc] init];
User *user = ...
Какой базовый класс
для всех объектов в
Objective-C?
Какой базовый класс
для всех объектов в
Objective-C?
NSObject
Как вызвать метод у
объекта user с
параметрами «topic»,
«text»
- (void)postCommentWithTopic:(NSString *)topic
andText:(NSS...
Как вызвать метод у
объекта user с
параметрами «topic»,
«text»
[user postCommentWithTopic:@"topic"
andText:@"text"];
- (vo...
Из чего состоит
свойство?
@property(nonatomic) NSInteger age;
Из чего состоит
свойство?
getter, setter, внутренняя
переменная
@property(nonatomic) NSInteger age;
Ещё немного 	

синтаксиса
Протоколы
@protocol SendMessageProtocol
!
- (void)sendMessage:(NSString *)message;
!
@end
@interface User : NSObject<SendMessageProtocol>
!
@end
@implementation User
!
- (void)sendMessage:(NSString *)message
{
//...
id<SendMessageProtocol> sender = [[User alloc] init];
!
[sender sendMessage:@"message"];
Модификаторы на
свойствах
• strong	

• weak
@interface Car : NSObject
!
@property(strong, nonatomic) NSArray *wheels;
!
@e...
City
Venue
Country
strong
strong
weak
weak
Си
http://ru.wikipedia.org/wiki/Си_(язык_программирования)
Структуры
CGPoint p;
p.x = 10;
p.y = 20;
p = CGPointMake(10, 20);
!
CGSize s;
s.width = 100;
s.height = 100;
s = CGSizeMak...
Структуры
typedef struct
{
float x;
float y;
} Location;
!
Location createLocation(float x, float y)
{
Location l;
l.x = x...
Перечисления
typedef enum
{
UIViewAnimationCurveEaseInOut,
UIViewAnimationCurveEaseIn,
UIViewAnimationCurveEaseOut,
UIView...
View
iPhone 5: 568px!
iPhone 4: 480px
320px
20px
UIView
@property(nonatomic) CGRect frame;
!
@property(nonatomic,readonly) UIView *superview;
@property(nonatomic,readonly,...
Стандартные контролы
AppDelegate.m
Controller
UIViewController
!
@property(nonatomic,retain) UIView *view;
!
- (void)viewDidLoad;
!
- (void)viewWillAppear:(BOOL)animate...
AppDelegate.m
ViewController.m
UILabel
Демонстрация
События
target, action
- (void)viewDidLoad
{
[super viewDidLoad];
!
[self.button addTarget:self
action:@selector(buttonClicked)
fo...
delegate
- (void)viewDidLoad
{
[super viewDidLoad];
self.textField.delegate = self;
}
!
- (BOOL)textFieldShouldReturn:(UIT...
@protocol UITextFieldDelegate <NSObject>
!
@optional
!
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
- (vo...
Отрывок
UIScrollViewDelegate
!
@protocol UIScrollViewDelegate
!
@optional
!
// any offset changes
- (void)scrollViewDidScr...
notifications
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center postNotificationName:@"UserChang...
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
           selector:@selecto...
MVC
Controller
ModelView
MVC
Controller
ModelView
MVC
Controller
ModelView
delegates
MVC
Controller
ModelView
delegates
target,action
MVC
Controller
ModelView
delegates
target,action
MVC
Controller
ModelView
delegates
notificationstarget,action
Демонстрация
• как сохранять ссылки на views в
контроллере	

• как обрабатывать нажатия UIButton	

• как работать с UIText...
Домашнее задание
• продумать из каких экранов будет
состоять ваше приложение	

• выбрать один из простых экранов, где
толь...
Всё!
Глеб Тарасов	

gleb34@gmail.com	

twitter.com/pilot34
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. Views
Upcoming SlideShare
Loading in...5
×

Интуит. Разработка приложений для iOS. Лекция 3. Views

349

Published on

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

No Downloads
Views
Total Views
349
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Интуит. Разработка приложений для iOS. Лекция 3. Views

  1. 1. Views Разработка приложений для iOS Лекция 3 Глеб Тарасов gleb34@gmail.com
  2. 2. Вспомним прошлое занятие
  3. 3. Чем отличаются строки "string1" и @"string2"
  4. 4. Чем отличаются строки "string1" и @"string2" Char* NSString* C Objective-C
  5. 5. Как сохранить число 5 в массив?
  6. 6. Как сохранить число 5 в массив? NSNumber ! @(5)
  7. 7. Что значит минус перед определением - (void)deleteProfile;
  8. 8. Что значит минус перед определением Метод объекта, а не класса - (void)deleteProfile;
  9. 9. Как создать объект? User *user = ...
  10. 10. Как создать объект? User *user = [[User alloc] init]; User *user = ...
  11. 11. Какой базовый класс для всех объектов в Objective-C?
  12. 12. Какой базовый класс для всех объектов в Objective-C? NSObject
  13. 13. Как вызвать метод у объекта user с параметрами «topic», «text» - (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;
  14. 14. Как вызвать метод у объекта user с параметрами «topic», «text» [user postCommentWithTopic:@"topic" andText:@"text"]; - (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;
  15. 15. Из чего состоит свойство? @property(nonatomic) NSInteger age;
  16. 16. Из чего состоит свойство? getter, setter, внутренняя переменная @property(nonatomic) NSInteger age;
  17. 17. Ещё немного синтаксиса
  18. 18. Протоколы @protocol SendMessageProtocol ! - (void)sendMessage:(NSString *)message; ! @end
  19. 19. @interface User : NSObject<SendMessageProtocol> ! @end @implementation User ! - (void)sendMessage:(NSString *)message { // send message } ! @end
  20. 20. id<SendMessageProtocol> sender = [[User alloc] init]; ! [sender sendMessage:@"message"];
  21. 21. Модификаторы на свойствах • strong • weak @interface Car : NSObject ! @property(strong, nonatomic) NSArray *wheels; ! @end ! @interface Wheel : NSObject ! @property(weak, nonatomic) Car *car; ! @end
  22. 22. City Venue Country strong strong weak weak
  23. 23. Си http://ru.wikipedia.org/wiki/Си_(язык_программирования)
  24. 24. Структуры CGPoint p; p.x = 10; p.y = 20; p = CGPointMake(10, 20); ! CGSize s; s.width = 100; s.height = 100; s = CGSizeMake(100, 100); ! CGRect r; r.size = s; r.origin = p; r = CGRectMake(10, 20, 100, 100);
  25. 25. Структуры typedef struct { float x; float y; } Location; ! Location createLocation(float x, float y) { Location l; l.x = x; l.y = y; return l; } ! int main() { Location l = createLocation(1.5, 0.5); printf("location: {%g, %g}", l.x, l.y); }
  26. 26. Перечисления typedef enum { UIViewAnimationCurveEaseInOut, UIViewAnimationCurveEaseIn, UIViewAnimationCurveEaseOut, UIViewAnimationCurveLinear } UIViewAnimationCurve; ! ! ! UIViewAnimationCurve a = UIViewAnimationCurveLinear; printf("%d", a);
  27. 27. View
  28. 28. iPhone 5: 568px! iPhone 4: 480px 320px 20px
  29. 29. UIView @property(nonatomic) CGRect frame; ! @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;
  30. 30. Стандартные контролы
  31. 31. AppDelegate.m
  32. 32. Controller
  33. 33. UIViewController ! @property(nonatomic,retain) UIView *view; ! - (void)viewDidLoad; ! - (void)viewWillAppear:(BOOL)animated; ! - (void)viewWillDisappear:(BOOL)animated;
  34. 34. AppDelegate.m
  35. 35. ViewController.m
  36. 36. UILabel
  37. 37. Демонстрация
  38. 38. События
  39. 39. target, action - (void)viewDidLoad { [super viewDidLoad]; ! [self.button addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside]; } ! - (void)buttonClicked { NSLog(@"buttonClicked"); }
  40. 40. delegate - (void)viewDidLoad { [super viewDidLoad]; self.textField.delegate = self; } ! - (BOOL)textFieldShouldReturn:(UITextField *)textField { NSLog(@"return pressed"); } ! @end @interface ViewController : UIViewController<UITextFieldDelegate>
  41. 41. @protocol UITextFieldDelegate <NSObject> ! @optional ! - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; - (void)textFieldDidBeginEditing:(UITextField *)textField; - (BOOL)textFieldShouldEndEditing:(UITextField *)textField; - (void)textFieldDidEndEditing:(UITextField *)textField; - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString: (NSString *)string; - (BOOL)textFieldShouldClear:(UITextField *)textField; - (BOOL)textFieldShouldReturn:(UITextField *)textField; ! @end UITextFieldDelegate
  42. 42. Отрывок UIScrollViewDelegate ! @protocol UIScrollViewDelegate ! @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; ! ...
  43. 43. 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(@"Событие произошло"); } Событие случилось: Ловим событие:
  44. 44. NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:self            selector:@selector(keyboardShown)                name:UIKeyboardDidShowNotification              object:nil]; - (void)keyboardShown {     NSLog(@"keyboardShown"); }
  45. 45. MVC Controller ModelView
  46. 46. MVC Controller ModelView
  47. 47. MVC Controller ModelView delegates
  48. 48. MVC Controller ModelView delegates target,action
  49. 49. MVC Controller ModelView delegates target,action
  50. 50. MVC Controller ModelView delegates notificationstarget,action
  51. 51. Демонстрация • как сохранять ссылки на views в контроллере • как обрабатывать нажатия UIButton • как работать с UITextField • как отобразить картинку • примеры других контролов
  52. 52. Домашнее задание • продумать из каких экранов будет состоять ваше приложение • выбрать один из простых экранов, где только надписи, картинки, поля ввода • реализовать его • спросить у меня, если непонятно, как что-то из этого экрана реализовать
  53. 53. Всё! Глеб Тарасов gleb34@gmail.com twitter.com/pilot34
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×