Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

занятие7

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 36 Anzeige
Anzeige

Weitere Verwandte Inhalte

Ähnlich wie занятие7 (20)

Weitere von Oleg Parinov (20)

Anzeige

занятие7

  1. 1. Разработка приложений для iPhone и iPad занятие #7
  2. 2. план • ScrollView • TableView
  3. 3. UIScrollView Scrolling Examples
  4. 4. Content Size контент contentSize.width contentSize.height
  5. 5. Content Inset contentInset.top contentInset.bottom
  6. 6. Content Inset contentSize.width contentInset.top contentSize.height contentInset.bottom
  7. 7. начало скролла Scroll Indicator Insets scrollIndicatorInsets.top
  8. 8. Content Offset
  9. 9. contentOffset.x contentOffset.y
  10. 10. contentSize.width contentInset.top contentSize.height contentInset.bottom contentInset.left contentInset.right Saturday, January 30, 2010 16
  11. 11. как использовать? CGRect frame = CGRectMake(0, 0, 200, 200); scrollView = [[UIScrollView alloc] initWithFrame:frame]; frame = CGRectMake(0, 0, 500, 500); myImageView = [[UIImageView alloc] initWithFrame:frame]; [scrollView addSubview:myImageView]; scrollView.contentSize = CGSizeMake(500, 500);
  12. 12. Делегат UIScrollViewDelegate @protocol UIScrollViewDelegate<NSObject> @optional - (void)scrollViewDidScroll:(UIScrollView *)scrollView; ... - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView; @end
  13. 13. Масштабирование scrollView.maximumZoomScale = 2.0; scrollView.minimumZoomScale = scrollView.frame.size.width / myImage.frame.size.width; и реализовать метод делегата: - (UIView *)viewForZoomingInScrollView:(UIScrollView *)view { return someViewThatWillBeScaled; }
  14. 14. Zoom to Rect - (void)setZoomScale:(float)scale animated:(BOOL); - (void)zoomToRect:(CGRect)rect animated:(BOOL); urday, January 30, 2010 26
  15. 15. TableView Table View Styles UITableViewStylePlain UITableViewStyleGrouped
  16. 16. анатомия TableView Table View Anatomy Plain Style Table Header Section Header Table Cell Section Footer Section Table Footer
  17. 17. анатомия TableView Table View Anatomy Grouped Style Table Header Section Header Table Cell Section Footer Section Table Footer
  18. 18. использование TableView • использование делегатов, предоставляющих данные • просит то, что сейчас нужно
  19. 19. UITableViewDataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)table; - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
  20. 20. Datasource Message Flow numberOfSectionsInTableView: How many sections? Datasource Saturday, January 30, 2010 41
  21. 21. Datasource Message Flow tableView:numberOfRowsInSection: How many rows in section 0? Datasource Saturday, January 30, 2010 42
  22. 22. Datasource Message Flow tableView:cellForRowAtIndexPath: What to display at section 0, row 0? Datasource Saturday, January 30, 2010 43
  23. 23. 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]; }
  24. 24. 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 - любой
  25. 25. Cell Styles initWithStyle - UITableViewCellStyle UITableViewCellStyleDefault UITableViewCellStyleSubtitle UITableViewCellStyleValue1 UITableViewCellStyleValue2
  26. 26. 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”;
  27. 27. 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; ... }
  28. 28. перезагрузить - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView reloadData]; }
  29. 29. добавление по ходу - (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;
  30. 30. UITableViewDelegate • поведение + внешний вид • логика отдельно от данных!
  31. 31. UITableViewDelegate - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath;
  32. 32. обычно... - (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]; }
  33. 33. UITableViewController = UITableView + делегаты
  34. 34. Хранение данных Property Lists • Property Lists - для небольшого объема • Writing an Array to Disk хранит обычные форматы данных iOS NSArray *array = [NSArray arrayWithObjects:@“Foo”, [NSNumber numberWithBool:YES], [NSDate dateWithTimeIntervalSinceNow:60], nil]; [array writeToFile:@“MyArray.plist” atomically:YES]; <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <array> ! <string>Foo</string> ! <true/> ! <date>2010-02-02T09:26:18Z</date> </array> </plist>
  35. 35. http://empatika.com oleg.parinov@empatika.com

Hinweis der Redaktion

  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

×