GeekBand-IOS实战-第三周

UITableView

它是IOS上最常见的界面组件

它有两种风格:

  • 按组分的叫UITableViewStyleGroupe风格
  • 所有的项目都排列在一起的叫UItableViewStylePlain风格
TableView的关系
UITableView1.png
UITableView2.png
UITableView3.png
UITableView4.png

UITableViewCell

可以联合UINavigation制作主从视图
** prepareSegue的加载在ViewDidLoad前 **

UITableView有这些东西


Style: plain , grouped

dataSource的方法

numberOfSectionInTableView :// 有多少个Section,返回一个整数

tableView:numberOfRowsInSection://有几行,返回一个整数

tableView:cellForRowAtIndexPath://第几行

tableView:ViewForHeader(or)FooterInSection://给什么样的view给header或footer

tableView:didSelectRowAtIndexPath:

Cell 的重复使用

这个机制会把看不见的select放在一个队列里缓存

当上下滑动时,缓存里的select会被取出使用

  • (UITableViewCell)tableView:(UITableView)tableView cellForRowAtIndexPath:(NSIndexPath
    *)indexPath{

    self.List= [NSArrayarrayWithObjects:
    @"张三",@"李四",@"王五",@"赵六",@"燕七",@"丁一",@"孙二",@"白八",@"熊大",@"熊二",nil];

NSString*Number = @"13888888888";

staticNSString*cellID = @"myCellID";

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellID];

cell.editing= YES;




if(!cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle  reuseIdentifier:cellID] ;
    cell.accessoryType = UITableViewCellAccessoryDetailButton;

}

cell.textLabel.text = [NSStringstringWithFormat:@"姓名:%@",self.List[indexPath.row]];

cell.imageView.image= [UIImageimageNamed:@"man.png"];

cell.detailTextLabel.text = [NSStringstringWithFormat:@"号码:%@",Number];

 return cell;

}

UITableViewCell 的内容区,系统提供了四种风格可供选择

  1. UITableViewCellStyleDefault
  • UITableViewCellStyleValue1
  • UITableViewCellStyleValue2
  • UITableViewCellStyleValueSubtitle

UITableViewCellde 附件区,系统提供了五种样式

  1. CheckMake “ √ ”
  • DetailButton “!"
  • DisclosureIndicator " > "
  • UItableViewCellAccessoryNone //没有图标
  • DetailDisclosureButton "!> "

Table View Controller

Static cell (静态表格)

仅嵌在·UITableViewController里时可以使用
下拉刷新界面

启用:用interFace Builder 或代码

self.refreshController = [[UIRefreshController alloc]init];

self.refreshController.attributedTitle = [[NSAttributedString alloc] initWithString:@"Scan"];//如果要自定义动画,这行代码要放到viewDidAppear里。默认是转菊花

[self.refreshController addTarget:self action:@selector(refreshing:) forControlEvents:UIControlEventValueChanged];

响应


-(IBAction)startRefresh:(id)sender {

[self.refreshControl
endRefreshing];

[self.tableView reloadData];

}

刷新

tableView reload

reloadData//刷新整个表格

reloadRowsAtIndexPath:withRowAnimation://刷新行

reloadSections:withRowAnimation://刷新整组

reloadSectionIndenxTitles//刷新索引

UICollectionView

它是UITable的一个扩展
对表格进行自然的扩展
对表格内职责进行进一步细分:分离Layout,可以自定义Layout子类

cells:主要的格子 —> item
Item view必须register后才能使用//如果使用storyboard创建的话就不用去register
Supplementary Views:类似于TableViewheard
Decoration views:背景修饰
Section:就是section

如果用代码创建collectionView
要在viewDidload里用下面的方法


1UICollectionView * CV= [UICollectionView alloc]initWithFrame:<#(CGRect)#>

collectionViewLayout:[UICollectionViewFlowLayout new];`

定位

要实现dataSource需要实现UICollectionViewDataSource协议
Collection 内cell的尺寸属性在属性面板尺子 图标下设置

imageCell的属性要放外部接口还是放内部?

因为cell是一个View层次的概念
所以把内部使用的结构暴露给使用者是合理
可以放在接口文件内

UICollectionView
动态确定格子大小
交互响应机会
手工移动格子

你可能感兴趣的:(GeekBand-IOS实战-第三周)