UITableView
它是IOS上最常见的界面组件
它有两种风格:
- 按组分的叫
UITableViewStyleGroupe
风格 - 所有的项目都排列在一起的叫
UItableViewStylePlain
风格
UITableViewCell
可以联合UINavigation制作主从视图
** prepareSegue的加载在ViewDidLoad前 **
UITableView有这些东西
<pre><code>
Style: plain , grouped
dataSource的方法
numberOfSectionInTableView :// 有多少个Section,返回一个整数
tableView:numberOfRowsInSection://有几行,返回一个整数
tableView:cellForRowAtIndexPath://第几行
tableView:ViewForHeader(or)FooterInSection://给什么样的view给header或footer
tableView:didSelectRowAtIndexPath:
</pre></code>
Cell 的重复使用
这个机制会把看不见的select放在一个队列里缓存
当上下滑动时,缓存里的select会被取出使用
<pre><code>
-
(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;
}
</pre></code>
UITableViewCell 的内容区,系统提供了四种风格可供选择
UITableViewCellStyleDefault
UITableViewCellStyleValue1
UITableViewCellStyleValue2
UITableViewCellStyleValueSubtitle
UITableViewCellde 附件区,系统提供了五种样式
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];
响应
<pre><code>
-(IBAction)startRefresh:(id)sender {
[self.refreshControl
endRefreshing];
[self.tableView reloadData];
}
刷新
tableView reload
reloadData//刷新整个表格
reloadRowsAtIndexPath:withRowAnimation://刷新行
reloadSections:withRowAnimation://刷新整组
reloadSectionIndenxTitles//刷新索引
</pre></code>
UICollectionView
它是UITable的一个扩展
对表格进行自然的扩展
对表格内职责进行进一步细分:分离Layout,可以自定义Layout子类
cells
:主要的格子 —> item
Item view
必须register
后才能使用//如果使用storyboard
创建的话就不用去register
Supplementary Views
:类似于TableView
的heard
Decoration views
:背景修饰
Section
:就是section
如果用代码创建collectionView
要在viewDidload
里用下面的方法
<pre><code>
1UICollectionView * CV= [UICollectionView alloc]initWithFrame:<#(CGRect)#>
collectionViewLayout:[UICollectionViewFlowLayout new];`
</pre></code>
要实现dataSource
需要实现UICollectionViewDataSource
协议
Collection 内cell的尺寸属性在属性面板尺子 图标下设置
imageCell的属性要放外部接口还是放内部?
因为cell
是一个View
层次的概念
所以把内部使用的结构暴露给使用者是合理
可以放在接口文件内