Squeek School #5

4,528 views

Published on

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

No Downloads
Views
Total views
4,528
On SlideShare
0
From Embeds
0
Number of Embeds
3,194
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Squeek School #5

  1. 1. squeek school Разработка приложений для iOS Занятие #5понедельник, 16 мая 2011 г.
  2. 2. Табличное представление + скроллинг • UITableView • UIScrollView • делегатыпонедельник, 16 мая 2011 г.
  3. 3. Table View Styles TableView UITableViewStylePlain UITableViewStyleGroupedпонедельник, 16 мая 2011 г.
  4. 4. анатомия TableView Table View Anatomy Plain Style Table Header Section Header Table Cell Section Footer Section Table Footerпонедельник, 16 мая 2011 г.
  5. 5. анатомия TableView Table View Anatomy Grouped Style Table Header Section Header Table Cell Section Footer Section Table Footerпонедельник, 16 мая 2011 г.
  6. 6. использование TableView • использование делегатов, предоставляющих данные • просит то, что сейчас нужнопонедельник, 16 мая 2011 г.
  7. 7. UITableViewDataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)table; - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;понедельник, 16 мая 2011 г.
  8. 8. Datasource Message Flow numberOfSectionsInTableView: How many sections? DatasourceSaturday, January 30, 2010 41понедельник, 16 мая 2011 г.
  9. 9. Datasource Message Flow tableView:numberOfRowsInSection: How many rows in section 0? DatasourceSaturday, January 30, 2010 42понедельник, 16 мая 2011 г.
  10. 10. Datasource Message Flow tableView:cellForRowAtIndexPath: What to display at section 0, row 0? DatasourceSaturday, January 30, 2010 43 понедельник, 16 мая 2011 г.
  11. 11. NSIndexPath • массив int • секция + строка • [NSIndexPath indexPathForRow:(NSUInteger)row inSection: (NSUInteger)section];- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = ...; cell.textLabel.text = [myStrings objectAtIndex:indexPath.row] return [cell autorelease];}понедельник, 16 мая 2011 г.
  12. 12. reuse - чтобы быстрее - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@“MyIdentifier”]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:... reuseIdentifier:@“MyIdenifier”] autorelease]; } cell.text = [myStrings objectAtIndex:indexPath.row] return cell; } identifier - любойпонедельник, 16 мая 2011 г.
  13. 13. Cell Styles initWithStyle - UITableViewCellStyle UITableViewCellStyleDefault UITableViewCellStyleSubtitle UITableViewCellStyleValue1 UITableViewCellStyleValue2понедельник, 16 мая 2011 г.
  14. 14. Basic properties • UITableViewCell has an image view and one or two text labels cell.imageView.image = [UIImage imageNamed:@“vitolidol.png”]; cell.textLabel.text = @“Vitol Idol”; cell.detailTextLabel.text = @“Billy Idol”;понедельник, 16 мая 2011 г.
  15. 15. Accessory Types // UITableView delegate method - (UITableViewCellAccessoryType)tableView:(UITableView *)table accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath; UITableViewCellAccessoryDisclosureIndicator UITableViewCellAccessoryDetailDisclosureButton UITableViewCellAccessoryCheckmark - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { // Only for the blue disclosure button NSUInteger row = indexPath.row; ... }понедельник, 16 мая 2011 г.
  16. 16. перезагрузить - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView reloadData]; }понедельник, 16 мая 2011 г.
  17. 17. добавление по ходу - (void)insertSections:(NSIndexSet *)sections withRowAnimation: (UITableViewRowAnimation)animation; - (void)deleteSections:(NSIndexSet *)sections withRowAnimation: (UITableViewRowAnimation)animation; - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation: (UITableViewRowAnimation)animation; - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation: (UITableViewRowAnimation)animation;понедельник, 16 мая 2011 г.
  18. 18. UITableViewDelegate • поведение + внешний вид • логика отдельно от данных!понедельник, 16 мая 2011 г.
  19. 19. выбор строки - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath;понедельник, 16 мая 2011 г.
  20. 20. обычно... - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = indexPath.row id objectToDisplay = [myObjects objectAtIndex:row]; MyViewController *myViewController = ...; myViewController.object = objectToDisplay; [self.navigationController pushViewController:myViewController animated:YES]; }понедельник, 16 мая 2011 г.
  21. 21. UITableViewController = UITableView + делегатыпонедельник, 16 мая 2011 г.
  22. 22. UIScrollView Scrolling Examplesпонедельник, 16 мая 2011 г.
  23. 23. Content Size контент contentSize.width contentSize.heightпонедельник, 16 мая 2011 г.
  24. 24. Content Inset contentInset.top contentInset.bottomпонедельник, 16 мая 2011 г.
  25. 25. Content Inset contentSize.width contentInset.top contentSize.height contentInset.bottomпонедельник, 16 мая 2011 г.
  26. 26. начало скролла Scroll Indicator Insets scrollIndicatorInsets.topпонедельник, 16 мая 2011 г.
  27. 27. Content Offsetпонедельник, 16 мая 2011 г.
  28. 28. contentOffset.x contentOffset.yпонедельник, 16 мая 2011 г.
  29. 29. contentSize.width contentInset.top contentSize.height contentInset.bottom contentInset.left contentInset.rightSaturday, January 30, 2010 16 понедельник, 16 мая 2011 г.
  30. 30. как использовать? CGRect frame = CGRectMake(0, 0, 200, 200); UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame]; frame = CGRectMake(0, 0, 500, 500); UIImage *image = [UIImage imageNamed:@"tree.jpg"]; UIImageView *myImageView = [[UIImageView alloc] initWithImage:image]; myImageView.frame = frame; [scrollView addSubview:myImageView]; scrollView.contentSize = CGSizeMake(500, 500); [self.view addSubview:scrollView];понедельник, 16 мая 2011 г.
  31. 31. Делегат UIScrollViewDelegate @protocol UIScrollViewDelegate<NSObject> @optional - (void)scrollViewDidScroll:(UIScrollView *)scrollView; ... - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView; @endпонедельник, 16 мая 2011 г.
  32. 32. Масштабирование scrollView.maximumZoomScale = 2.0; scrollView.minimumZoomScale = scrollView.frame.size.width / myImage.frame.size.width; и реализовать метод делегата: - (UIView *)viewForZoomingInScrollView:(UIScrollView *)view { return someViewThatWillBeScaled; }понедельник, 16 мая 2011 г.
  33. 33. Zoom to Rect - (void)setZoomScale:(float)scale animated:(BOOL); - (void)zoomToRect:(CGRect)rect animated:(BOOL);urday, January 30, 2010 26day, January мая 2011 г. понедельник, 16 30, 2010

×