UITableView
它是IOS上最常見(jiàn)的界面組件
它有兩種風(fēng)格:
- 按組分的叫
UITableViewStyleGroupe
風(fēng)格 - 所有的項(xiàng)目都排列在一起的叫
UItableViewStylePlain
風(fēng)格
UITableViewCell
可以聯(lián)合UINavigation制作主從視圖
** prepareSegue的加載在ViewDidLoad前 **
UITableView有這些東西
<pre><code>
Style: plain , grouped
dataSource的方法
numberOfSectionInTableView :// 有多少個(gè)Section降淮,返回一個(gè)整數(shù)
tableView:numberOfRowsInSection://有幾行翰铡,返回一個(gè)整數(shù)
tableView:cellForRowAtIndexPath://第幾行
tableView:ViewForHeader(or)FooterInSection://給什么樣的view給header或footer
tableView:didSelectRowAtIndexPath:
</pre></code>
Cell 的重復(fù)使用
這個(gè)機(jī)制會(huì)把看不見(jiàn)的select放在一個(gè)隊(duì)列里緩存
當(dāng)上下滑動(dòng)時(shí),緩存里的select會(huì)被取出使用
<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:@"號(hào)碼:%@",Number];
return cell;
}
</pre></code>
UITableViewCell 的內(nèi)容區(qū)进陡,系統(tǒng)提供了四種風(fēng)格可供選擇
UITableViewCellStyleDefault
UITableViewCellStyleValue1
UITableViewCellStyleValue2
UITableViewCellStyleValueSubtitle
UITableViewCellde 附件區(qū),系統(tǒng)提供了五種樣式
CheckMake “ √ ”
DetailButton “!"
DisclosureIndicator " > "
UItableViewCellAccessoryNone //沒(méi)有圖標(biāo)
DetailDisclosureButton "鲁驶!> "
Table View Controller
Static cell (靜態(tài)表格)
僅嵌在·UITableViewController
里時(shí)可以使用
下拉刷新界面
啟用:用interFace Builder 或代碼
self.refreshController = [[UIRefreshController alloc]init];
self.refreshController.attributedTitle = [[NSAttributedString alloc] initWithString:@"Scan"];//如果要自定義動(dòng)畫(huà),這行代碼要放到viewDidAppear里赎线。默認(rèn)是轉(zhuǎn)菊花
[self.refreshController addTarget:self action:@selector(refreshing:) forControlEvents:UIControlEventValueChanged];
響應(yīng)
<pre><code>
-(IBAction)startRefresh:(id)sender {
[self.refreshControl
endRefreshing];
[self.tableView reloadData];
}
刷新
tableView reload
reloadData//刷新整個(gè)表格
reloadRowsAtIndexPath:withRowAnimation://刷新行
reloadSections:withRowAnimation://刷新整組
reloadSectionIndenxTitles//刷新索引
</pre></code>
UICollectionView
它是UITable的一個(gè)擴(kuò)展
對(duì)表格進(jìn)行自然的擴(kuò)展
對(duì)表格內(nèi)職責(zé)進(jìn)行進(jìn)一步細(xì)分:分離Layout廷没,可以自定義Layout子類
cells
:主要的格子 —> item
Item view
必須register
后才能使用//如果使用storyboard
創(chuàng)建的話就不用去register
Supplementary Views
:類似于TableView
的heard
Decoration views
:背景修飾
Section
:就是section
如果用代碼創(chuàng)建collectionView
要在viewDidload
里用下面的方法
<pre><code>
1UICollectionView * CV= [UICollectionView alloc]initWithFrame:<#(CGRect)#>
collectionViewLayout:[UICollectionViewFlowLayout new];`
</pre></code>
要實(shí)現(xiàn)dataSource
需要實(shí)現(xiàn)UICollectionViewDataSource
協(xié)議
Collection 內(nèi)cell的尺寸屬性在屬性面板尺子 圖標(biāo)下設(shè)置
imageCell的屬性要放外部接口還是放內(nèi)部?
因?yàn)?code>cell是一個(gè)View
層次的概念
所以把內(nèi)部使用的結(jié)構(gòu)暴露給使用者是合理
可以放在接口文件內(nèi)