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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

290
views

Published on

Published in: Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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