занятие7

1,195 views

Published on

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

No Downloads
Views
Total views
1,195
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \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
  • занятие7

    1. 1. Разработка приложений для iPhone и iPad занятие #7
    2. 2. план• ScrollView• TableView
    3. 3. UIScrollViewScrolling Examples
    4. 4. Content Size контент contentSize.width contentSize.height
    5. 5. Content Inset contentInset.topcontentInset.bottom
    6. 6. Content Inset contentSize.width contentInset.top contentSize.height contentInset.bottom
    7. 7. начало скролла Scroll Indicator InsetsscrollIndicatorInsets.top
    8. 8. ContentOffset
    9. 9. contentOffset.xcontentOffset.y
    10. 10. contentSize.width contentInset.top contentSize.height contentInset.bottom contentInset.left contentInset.rightSaturday, 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. TableViewTable View Styles UITableViewStylePlain UITableViewStyleGrouped
    16. 16. анатомия TableView Table View Anatomy Plain StyleTable Header Section Header Table Cell Section Footer SectionTable Footer
    17. 17. анатомия TableView Table View Anatomy Grouped StyleTable Header Section Header Table Cell Section Footer SectionTable Footer
    18. 18. использование TableView• использование делегатов, предоставляющих данные• просит то, что сейчас нужно
    19. 19. UITableViewDataSource- (NSInteger)numberOfSectionsInTableView:(UITableView *)table;- (NSInteger)tableView:(UITableView *)tableViewnumberOfRowsInSection:(NSInteger)section;- (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath;
    20. 20. Datasource Message Flow numberOfSectionsInTableView: How many sections? DatasourceSaturday, January 30, 2010 41
    21. 21. Datasource Message Flow tableView:numberOfRowsInSection: How many rows in section 0? DatasourceSaturday, January 30, 2010 42
    22. 22. Datasource Message Flow tableView:cellForRowAtIndexPath: What to display at section 0, row 0? DatasourceSaturday, 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 *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@“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 *)tableaccessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath; UITableViewCellAccessoryDisclosureIndicator UITableViewCellAccessoryDetailDisclosureButton UITableViewCellAccessoryCheckmark- (void)tableView:(UITableView *)tableViewaccessoryButtonTappedForRowWithIndexPath:(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.rowid 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.comoleg.parinov@empatika.com

    ×