UITableView全面解析

1.概念

它是基于UIScrollView的列表互動(dòng)類袍暴。使用UITableView可以在屏幕上顯示單元格的列表填帽,每個(gè)單元格中還可以包含多項(xiàng)信息执泰,在使用表格視圖時(shí)宋下,我們還可以將這些單元格劃分為多個(gè)分區(qū)(section)嗡善,以便將信息分為若干組,總而言之就是表格視圖非常有用学歧。使用它比較簡(jiǎn)單罩引,通常4個(gè)步驟:創(chuàng)建UITableView的對(duì)象、綁定數(shù)據(jù)源和委托枝笨、獲得數(shù)據(jù)模型袁铐、編寫(xiě)回調(diào)方法。當(dāng)然伺帘,還可以通過(guò)繼承或直接使用UITableViewController的方式來(lái)顯示表格視圖昭躺,但是我個(gè)人比較推薦的方式是根據(jù)需要直接創(chuàng)建UITableView的對(duì)象,通過(guò)委托及數(shù)據(jù)源對(duì)UITableView對(duì)象進(jìn)行定制伪嫁,再將定制好的UITableViewCell作為表格視圖的單元格置于表格視圖中领炫。UITableView的設(shè)計(jì)嚴(yán)格遵循了MVC模式,通過(guò)數(shù)據(jù)源提供的模型來(lái)生成與表格內(nèi)容有關(guān)的信息张咳,數(shù)據(jù)源委托相當(dāng)于控制器帝洪,當(dāng)用戶想要選擇或編輯表格內(nèi)容時(shí)似舵,應(yīng)用程序通過(guò)委托來(lái)響應(yīng)這些變化,操作成功后還能夠刷新數(shù)據(jù)模型以反映用戶所做的修改葱峡。

2.結(jié)構(gòu)

tableView層次結(jié)構(gòu)

contentView下默認(rèn)有3個(gè)子視圖

2個(gè)是UILabel(textLabel砚哗、detailTextLabel)

1個(gè)UIImageView(imageView)

UITableViewCellStyle屬性:

用于決定使用contentView的哪些子視圖,以及這些子視圖在contentView中的位置

3.cell簡(jiǎn)單認(rèn)識(shí)

1.cell的結(jié)構(gòu)

2.cell重用原理

1.當(dāng)滾動(dòng)列表時(shí)砰奕,部分UITableViewCell會(huì)移出窗口蛛芥,UITableView會(huì)將窗口外的UITableViewCell放入一個(gè)對(duì)象池中,等待重用军援。2.當(dāng)UITableView要求dataSource返回UITableViewCell時(shí)仅淑,dataSource會(huì)先查看這個(gè)對(duì)象池,如果池中有未使用的UITableViewCell胸哥,dataSource會(huì)用新的數(shù)據(jù)配置這個(gè)UITableViewCell涯竟,然后返回給UITableView,重新顯示到窗口中空厌,從而避免創(chuàng)建新對(duì)象

3.不同類型的Cell重用

解決方案:指定不同類型對(duì)應(yīng)的重用標(biāo)識(shí)來(lái)區(qū)分

1.UITableViewCell有個(gè)NSString*reuseIdentifier屬性庐船,可以在初始化UITableViewCell的時(shí)候傳入一個(gè)特定的字符串標(biāo)識(shí)來(lái)設(shè)置reuseIdentifier(一般用UITableViewCell的類名)。2.當(dāng)UITableView要求dataSource返回UITableViewCell時(shí)嘲更,先通過(guò)一個(gè)字符串標(biāo)識(shí)到對(duì)象池中查找對(duì)應(yīng)類型的UITableViewCell對(duì)象筐钟,如果有,就重用赋朦,如果沒(méi)有盗棵,就傳入這個(gè)字符串標(biāo)識(shí)來(lái)初始化一個(gè)UITableViewCell對(duì)象

4.注冊(cè)cell

1.用類名注冊(cè)[self.tableView registerClass:[TagCellclass]forCellReuseIdentifier:@"tgID"];2.通過(guò)xib / storyboard畫(huà)的,注冊(cè) 如下兩張圖:

屏幕快照 2016-08-26 下午4.57.46.png

后面復(fù)用

屏幕快照 2016-08-26 下午4.58.17.png

5.iOS8 , 自動(dòng)計(jì)算Cell高度

// 告訴tableView的真實(shí)高度是自動(dòng)計(jì)算的北发,根據(jù)你的約束來(lái)計(jì)算self.tableView.rowHeight =UITableViewAutomaticDimension;// 告訴tableView所有cell的估計(jì)行高self.tableView.estimatedRowHeight =44// 返回估算告訴,作用:在tablView顯示時(shí)候,先根據(jù)估算高度得到整個(gè)tablView高,而不必知道每個(gè)cell的高度,從而達(dá)到高度方法的懶加載調(diào)用

4. 常用屬性

// 1.UITableView的兩種樣式UITableViewStylePlain/UITableViewStyleGrouped// 2.設(shè)置背景顏色self.tableView.backgroundColor = [UIColorpurpleColor];// 3.設(shè)置索引條內(nèi)部文字顏色self.tableView.sectionIndexColor = [UIColorcolorWithRed:1green:1blue:1alpha:1];// 4.設(shè)置索引條背景顏色self.tableView.sectionIndexBackgroundColor = [UIColorcolorWithRed:0green:0blue:0alpha:1];//5. 修改tableView的行高self.tableView.rowHeight =100;// 6.組頭組尾的高self.tableView.sectionHeaderHeight =55;self.tableView.sectionFooterHeight =22;// 7.設(shè)置整個(gè)tablView的頭部/尾部視圖self.tableView.tableHeaderView = [[UISwitchalloc] init];self.tableView.tableFooterView = [UIButtonbuttonWithType:UIButtonTypeInfoDark];// 8.設(shè)置我們分割線顏色(clearColor相當(dāng)于取消系統(tǒng)分割線)self.tableView.separatorColor = [UIColorclearColor];// 9.設(shè)置分割線樣式(此為不要分割線None)self.tableView.separatorStyle =UITableViewCellSeparatorStyleNone;// 10.cell不讓選中[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 或者:cell.selectionStyle =UITableViewCellSelectionStyleNone;

5.常用方法

#pragma mark - 數(shù)據(jù)源方法// 返回行數(shù)- (NSInteger)tableView:(nonnullUITableView*)tableView numberOfRowsInSection:(NSInteger)section{}// 設(shè)置cell- (UITableViewCell*)tableView:(nonnullUITableView*)tableView cellForRowAtIndexPath:(nonnullNSIndexPath*)indexPath{}#pragma mark - 代理方法// 設(shè)置行高- (CGFloat)tableView:(nonnullUITableView*)tableView heightForRowAtIndexPath:(nonnullNSIndexPath*)indexPath{return100;}// 添加每組的組頭- (UIView*)tableView:(nonnullUITableView*)tableView viewForHeaderInSection:(NSInteger)section{ }// 返回每組的組尾- (UIView*)tableView:(nonnullUITableView*)tableView viewForFooterInSection:(NSInteger)section{ }// 選中某行cell時(shí)會(huì)調(diào)用- (void)tableView:(nonnullUITableView*)tableView didSelectRowAtIndexPath:(nonnullNSIndexPath*)indexPath{NSLog(@"選中didSelectRowAtIndexPath row = %ld", indexPath.row);}// 取消選中某行cell會(huì)調(diào)用 (當(dāng)我選中第0行的時(shí)候纹因,如果現(xiàn)在要改為選中第1行 - 》會(huì)先取消選中第0行,然后調(diào)用選中第1行的操作)- (void)tableView:(nonnullUITableView*)tableView didDeselectRowAtIndexPath:(nonnullNSIndexPath*)indexPath{NSLog(@"取消選中 didDeselectRowAtIndexPath row = %ld ", indexPath.row);}// 設(shè)置UITableView的索引條琳拨,返回?cái)?shù)組字符串集- (nullableNSArray *)sectionIndexTitlesForTableView:(UITableView*)tableView;

6.創(chuàng)建UITableView大致過(guò)程總結(jié)

1.表格的樣式:iPhone上的表格分為普通樣式和分組樣式瞭恰。在默認(rèn)情況下,普通樣式的背景是白色狱庇,上面會(huì)有透明的單元格惊畏。如果希望改變表格樣式,需要在初始化時(shí)進(jìn)行指定密任,一旦初始化完畢是不能夠更改表格樣式的颜启。

2.設(shè)置數(shù)據(jù)源:設(shè)置UITableView的dataSource屬性,該屬性對(duì)應(yīng)的指針指向的對(duì)象必須遵循UITableViewDataSource協(xié)議浪讳,并實(shí)現(xiàn)協(xié)議中的相關(guān)方法缰盏。通過(guò)該數(shù)據(jù)源除了獲得單元格的數(shù)據(jù)之外,還可以指定表格中的分區(qū)數(shù),每個(gè)分區(qū)的單元格數(shù)量口猜,分區(qū)的頭尾的標(biāo)題负溪,分區(qū)的索引等內(nèi)容。

3.指定單元格:可以通過(guò)NSIndexPath變量來(lái)確定一個(gè)單元格济炎,NSIndexPath結(jié)構(gòu)體有兩個(gè)成員川抡,一個(gè)是section,一個(gè)是row须尚,分別表示單元格所在的分區(qū)和分區(qū)中的第幾行崖堤。

4.注冊(cè)單元格:創(chuàng)建表格視圖時(shí),應(yīng)該及早注冊(cè)表格中使用的單元格耐床,注冊(cè)之后應(yīng)該盡可能復(fù)用注冊(cè)好的單元格而不是重復(fù)創(chuàng)建新的單元格倘感,這種復(fù)用對(duì)節(jié)省內(nèi)存是極好的。在注冊(cè)的時(shí)候可以使用一個(gè)字符串作為標(biāo)識(shí)符咙咽,稍后可以通過(guò)這個(gè)標(biāo)識(shí)符獲得可復(fù)用單元格。

5.設(shè)置委托:可以通過(guò)UITableView對(duì)象的delegate屬性來(lái)對(duì)用戶操作做出響應(yīng)淤年,可以響應(yīng)表格滾動(dòng)钧敞,用戶編輯或者選中某行等事件。該屬性代表的指針會(huì)指向一個(gè)遵循UITableViewDelegate協(xié)議的對(duì)象麸粮,由該對(duì)象負(fù)責(zé)實(shí)現(xiàn)事件發(fā)生時(shí)的回調(diào)方法溉苛。

7.常用功能講解

7.1代碼自定義不等高cell

1.新建一個(gè)繼承自UITableViewCell的類2.重寫(xiě)initWithStyle:reuseIdentifier:方法? ? 1).添加所有需要顯示的子控件(不需要設(shè)置子控件的數(shù)據(jù)和fram,子? ? ? ? ? 控件要添加到contentView中)? ? 2).進(jìn)行子控件一次性的屬性設(shè)置(有些屬性只需要設(shè)置一次, 比如字體\固定的圖片)3.提供2個(gè)模型? ? 1).數(shù)據(jù)模型: 存放文字?jǐn)?shù)據(jù)\圖片數(shù)據(jù)? ? 2).frame模型: 存放數(shù)據(jù)模型\所有子控件的frame\cell的高度4.cell擁有一個(gè)frame模型(不要直接擁有數(shù)據(jù)模型)5.重寫(xiě)frame模型屬性的setter方法: 在這個(gè)方法中設(shè)置子控件的顯示數(shù)據(jù)和frame6.frame模型數(shù)據(jù)的初始化已經(jīng)采取懶加載的方式(每一個(gè)cell對(duì)應(yīng)的frame模型數(shù)據(jù)只加載一次)

7.2全局刷新、局部刷新

1).全局刷新

[self.tableView reloadData];

2).局部刷新

(1)局部section刷新

NSIndexSet* nd=[[NSIndexSetalloc]initWithIndex:1];//刷新第二個(gè)section[tableView reloadSections:nd withRowAnimation:UITableViewRowAnimationAutomatic];另外寫(xiě)法:[tableView reloadSections:[NSIndexSetindexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationAutomatic];

(2)局部cell刷新

reloadRowsAtIndexPaths

例如:

NSIndexPath*te=[NSIndexPathindexPathForRow:2inSection:0];//刷新第一個(gè)section的第二行[tableView reloadRowsAtIndexPaths:[NSArrayarrayWithObjects:te,nil] withRowAnimation:UITableViewRowAnimationMiddle];另外寫(xiě)法:[tableView reloadRowsAtIndexPaths:@[[NSIndexPathindexPathForRow:2inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];

修改Cell的模型數(shù)據(jù)可以使用reloadRowsAtIndexPaths...進(jìn)行局部刷新

該方法使用的前提是模型數(shù)據(jù)的個(gè)數(shù)不變弄诲,因?yàn)樾薷牟⑽葱薷哪P蛿?shù)據(jù)的個(gè)數(shù)愚战,所以可以使用該方法進(jìn)行局部刷新

[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationBottom];

刪除局部刷新,刪除調(diào)用deleteRowsAtIndexPaths...方法

注意:這里注意齐遵,和添加操作一樣我們不能使用UITableView提供的reloadRowsAtIndexPaths...方法 -> 使用的前提是模型數(shù)據(jù)數(shù)量不變

[self.tableView deleteRowsAtIndexPaths:@[[NSIndexPathindexPathForRow:0inSection:0]] withRowAnimation:UITableViewRowAnimationMiddle];

7.3tableView的編輯

UITableView有一個(gè)名為editing的屬性寂玲,如果將其設(shè)置為YES,UITableView就會(huì)進(jìn)入編輯模式梗摇。UITableView在編輯模式下拓哟,用戶可以管理UITableView中的表格行,例如添加伶授、刪除和移動(dòng)等操作断序,但是編輯模式?jīng)]有修改行的功能。

切換編輯模式:setEditing:animated:

增加行:insertRowsAtIndexPaths:withRowAnimation:

刪除行:deleteRowsAtIndexPaths:withRowAnimation:

移動(dòng)行:moveRowAtIndexPath:toIndexPath:

開(kāi)始/結(jié)束更新:beginUpdates/endUpdates

刷新表格數(shù)據(jù):reloadData

刷新指定位置數(shù)據(jù):reloadRowsAtIndexPaths:withRowAnimation:

刷新指定區(qū)段數(shù)據(jù):reloadSections:withRowAnimation:

左滑功能

1糜烹、 讓UITableView進(jìn)入編輯狀態(tài)违诗,會(huì)出現(xiàn)左滑效果

// self.tableView.editing = YES;// self.tableView.editing = !self.tableView.editing; [self.tableView setEditing:!self.tableView.editing animated:YES];

2、 代理方法處理左滑效果時(shí)編輯事件處理

// 只要實(shí)現(xiàn)了這個(gè)方法疮蹦,左滑出現(xiàn)刪除按鈕的功能就有了點(diǎn)擊了左滑出現(xiàn)的“刪除”按鈕就會(huì)調(diào)用typedefNS_ENUM(NSInteger,UITableViewCellEditingStyle) {UITableViewCellEditingStyleNone,UITableViewCellEditingStyleDelete,UITableViewCellEditingStyleInsert}; - (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath

3诸迟、返回左滑右邊執(zhí)行刪除操作按鈕文字

- (NSString*)tableView:(nonnullUITableView*)tableViewtitleForDeleteConfirmationButtonForRowAtIndexPath:(nonnullNSIndexPath*)indexPath;

4.設(shè)置左滑顯示對(duì)應(yīng)按鈕及其處理事件

- (nullableNSArray *)tableView:(UITableView*)tableView editActionsForRowAtIndexPath:(NSIndexPath*)indexPathNS_AVAILABLE_IOS(8_0);

項(xiàng)目中的左滑刪除功能代碼(掃碼上車):

selectPassengerList:這個(gè)是可變數(shù)組,裝cell的數(shù)據(jù)

屏幕快照 2017-05-15 下午4.09.09.png

屏幕快照 2017-05-15 下午4.04.58.png

補(bǔ)充1:左滑顯示多個(gè)按鈕(自定義)

例子:左滑顯示編輯和刪除按鈕

屏幕快照 2017-10-16 下午4.26.43.png

屏幕快照 2017-10-16 下午4.28.24.png

屏幕快照 2017-10-16 下午4.29.42.png

補(bǔ)充2:實(shí)現(xiàn)左滑調(diào)接口刪除

刪除部分代碼

刪除成功的回調(diào)

其他例子圖片:

屏幕快照 2018-11-07 下午5.05.32.png

https://zhidao.baidu.com/question/754485262492780924.html

7.4tableView的內(nèi)容能穿透導(dǎo)航欄與TabBar,而且內(nèi)容都不被它們擋住

7.4如何實(shí)現(xiàn)水平滾動(dòng)的UITableView

8.普通型表格視圖~~~代碼

屏幕快照 2016-08-05 上午11.17.01.png

屏幕快照 2016-08-05 上午11.17.34.png

#pragma mark UITableViewDelegate相關(guān)回調(diào)方法// 選中單元格的回調(diào)方法- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {}

運(yùn)行結(jié)果如下圖:

屏幕快照 2016-08-05 上午11.19.17.png

9.分組類表格視圖~~~代碼

可以將表格的內(nèi)容分為若干個(gè)分區(qū)亮蒋,事實(shí)上保存表格數(shù)據(jù)模型的數(shù)組中的元素也是數(shù)組扣典,那么每個(gè)數(shù)組就是一個(gè)分區(qū),數(shù)組中的元素對(duì)應(yīng)著分區(qū)中的行慎玖≈猓可以為分區(qū)建立索引以方便的切換到分區(qū),也可以對(duì)分區(qū)的頭尾進(jìn)行定制趁怔,這些也是通過(guò)表格視圖的數(shù)據(jù)源和委托來(lái)實(shí)現(xiàn)的湿硝。下面的例子演示了如何創(chuàng)建有若干個(gè)分區(qū)的表格視圖。

1).普通的分組類型代碼如下

屏幕快照 2016-08-07 上午1.18.32.png

屏幕快照 2016-08-07 上午1.18.49.png

屏幕快照 2016-08-07 上午1.19.03.png

屏幕快照 2016-08-07 上午1.19.36.png

屏幕快照 2016-08-07 上午1.21.15.png

2).自己稍微定制一下(頭部用按鈕润努,可以展開(kāi))

// //獲得分組標(biāo)題名稱的回調(diào)方法//- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {//? ? static NSArray *titles = nil;//? ? if (!titles) {//? ? ? ? titles = @[@"A組", @"B組", @"C組", @"D組"];//? ? }//? ? return titles[section];//}將這段代碼換成"按鈕"的- (UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section {staticNSArray*titles =nil;if(!titles) {? ? ? ? titles = @[@"A組",@"B組",@"C組",@"D組"];? ? }UIButton*headerButton = [UIButtonbuttonWithType:UIButtonTypeCustom];? ? headerButton.frame =CGRectMake(0,0, WIDTH,30);? ? [headerButton setTitle:titles[section] forState:UIControlStateNormal];? ? headerButton.titleLabel.font = [UIFontsystemFontOfSize:22];? ? [headerButton setTitleColor:[UIColoryellowColor] forState:UIControlStateNormal];? ? [headerButton setBackgroundColor:[UIColorblueColor]];? ? headerButton.tag = section +200;? ? [headerButton addTarget:selfaction:@selector(headerButtonClicked:) forControlEvents:UIControlEventTouchUpInside];returnheaderButton;}- (void)headerButtonClicked:(UIButton*) sender {? ? folded[sender.tag -200] = !folded[sender.tag -200];// 刷新表格[myTableView reloadData];}備注:索引的方法//獲得索引的回調(diào)方法- (NSArray*)sectionIndexTitlesForTableView:(UITableView*)tableView {return@[@"金",@"木",@"水",@"火",@"土"];}

創(chuàng)建表格時(shí)指定樣式為分組的結(jié)果

屏幕快照 2016-08-07 上午1.27.15.png

指定樣式為普通時(shí)的結(jié)果

屏幕快照 2016-08-07 上午1.28.32.png

10.表格視圖的編輯操作

工具類

.h+ (UIColor*) randomLightColor;.m+ (UIColor*) randomLightColor {CGFloatred = (arc4random() %128+128) /255.0;CGFloatgreen = (arc4random() %128+128) /255.0;CGFloatblue = (arc4random() %128+128) /255.0;return[UIColorcolorWithRed:red green:green blue:blue alpha:1];}

模型

屏幕快照 2016-08-29 上午11.21.04.png

屏幕快照 2016-08-29 上午11.21.41.png

屏幕快照 2016-08-29 上午11.21.54.png

屏幕快照 2016-08-29 上午11.22.12.png

(這個(gè)的.m為空)

控制器

屏幕快照 2016-08-27 下午5.07.28.png

屏幕快照 2016-08-27 下午5.08.00.png

屏幕快照 2016-08-27 下午5.08.25.png

屏幕快照 2016-08-27 下午5.08.43.png

屏幕快照 2016-08-27 下午5.09.09.png

屏幕快照 2016-08-27 下午5.09.23.png

屏幕快照 2016-08-27 下午5.09.42.png

屏幕快照 2016-08-27 下午5.10.18.png

效果

屏幕快照 2016-08-27 下午5.06.12.png

屏幕快照 2016-08-27 下午5.06.40.png

11.如何在一個(gè)視圖控制器里添加多個(gè)UITableview关斜?

效果圖:

1388997-400a1c03a88645d6-1.png

代碼如下:

#import"ViewController.h"#import"MyTableViewCell.h"@interfaceViewController(){NSMutableArray*dataArray1;NSMutableArray*dataArray2;UITableView*mytableViewLeft;UITableView*mytableViewRight;}@end@implementationViewController- (void)viewDidLoad {? ? [superviewDidLoad];// Do any additional setup after loading the view, typically from a nib.mytableViewLeft = [[UITableViewalloc] initWithFrame:CGRectMake(0,10,330,350) style:UITableViewStylePlain];? ? [self.view addSubview:mytableViewLeft];? ? mytableViewLeft.delegate =self;? ? mytableViewLeft.dataSource =self;// 定制單元格[mytableViewLeft registerNib:[UINibnibWithNibName:@"MyTableViewCell"bundle:[NSBundlemainBundle]] forCellReuseIdentifier:@"CELL"];? ? mytableViewRight = [[UITableViewalloc] initWithFrame:CGRectMake(333,10,330,350) style:UITableViewStylePlain];? ? [self.view addSubview:mytableViewRight];? ? mytableViewRight.delegate =self;? ? mytableViewRight.dataSource =self;? ? [selfloadData];}- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{if(tableView == mytableViewLeft) {returndataArray1.count;? ? }else{returndataArray2.count;? ? }}- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{if(tableView == mytableViewLeft) {return80;? ? }else{return40;? ? }}- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{if(tableView == mytableViewLeft) {? ? ? ? MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CELL"forIndexPath:indexPath];? ? ? ? cell.titleLabel.text = dataArray1[indexPath.row];returncell;? ? }else{UITableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:@"cell2"];if(!cell) {? ? ? ? ? ? cell = [[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:@"cell2"];? ? ? ? }? ? ? ? cell.textLabel.text = dataArray2[indexPath.row];returncell;? ? }}// 獲取數(shù)據(jù)- (void) loadData{if(!dataArray1) {? ? ? ? dataArray1 = [NSMutableArrayarray];? ? }for(inti=0; i<10; i++) {NSString*str = [NSStringstringWithFormat:@"左 %d",i];? ? ? ? [dataArray1 addObject:str];? ? }if(!dataArray2) {? ? ? ? dataArray2 = [NSMutableArrayarray];? ? }for(inti=0; i<15; i++) {NSString*str = [NSStringstringWithFormat:@"右 %d",i];? ? ? ? [dataArray2 addObject:str];? ? }}- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{if(tableView == mytableViewLeft) {NSLog(@"%@",[NSStringstringWithFormat:@"左邊 第 %ld 行",indexPath.row +1]);? ? }else{NSLog(@"%@",[NSStringstringWithFormat:@"右邊 第 %ld 行",indexPath.row +1]);? ? }}@end

12.去掉tableview頂端粘滯效果

- (void)scrollViewDidScroll:(UIScrollView*)scrollView {CGFloatsectionHeaderHeight =30;if(scrollView.contentOffset.y <= sectionHeaderHeight && scrollView.contentOffset.y >=0) {? ? ? ? ? ? ? ? scrollView.contentInset =UIEdgeInsetsMake(-scrollView.contentOffset.y,0,0,0);? ? }elseif(scrollView.contentOffset.y >= sectionHeaderHeight) {? ? ? ? ? ? ? ? scrollView.contentInset =UIEdgeInsetsMake(-sectionHeaderHeight,0,0,0);? ? }}

補(bǔ)充相關(guān)內(nèi)容

表格視圖實(shí)現(xiàn)單選與復(fù)選:

http://m.blog.csdn.net/article/details?id=51375476

作者:_啊祥同學(xué)

鏈接:http://www.reibang.com/p/e43228201a8b

來(lái)源:簡(jiǎn)書(shū)

簡(jiǎn)書(shū)著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處铺浇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痢畜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鳍侣,更是在濱河造成了極大的恐慌丁稀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡麸塞,警方通過(guò)查閱死者的電腦和手機(jī)梦抢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事“兹龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵粗卜,是天一觀的道長(zhǎng)棘捣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)休建,這世上最難降的妖魔是什么乍恐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮测砂,結(jié)果婚禮上茵烈,老公的妹妹穿的比我還像新娘。我一直安慰自己砌些,他們只是感情好呜投,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布加匈。 她就那樣靜靜地躺著,像睡著了一般仑荐。 火紅的嫁衣襯著肌膚如雪雕拼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天粘招,我揣著相機(jī)與錄音啥寇,去河邊找鬼。 笑死洒扎,一個(gè)胖子當(dāng)著我的面吹牛辑甜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袍冷,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼磷醋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了胡诗?” 一聲冷哼從身側(cè)響起邓线,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煌恢,沒(méi)想到半個(gè)月后骇陈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡症虑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了归薛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谍憔。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖主籍,靈堂內(nèi)的尸體忽然破棺而出习贫,到底是詐尸還是另有隱情,我是刑警寧澤千元,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布苫昌,位于F島的核電站,受9級(jí)特大地震影響幸海,放射性物質(zhì)發(fā)生泄漏祟身。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一物独、第九天 我趴在偏房一處隱蔽的房頂上張望袜硫。 院中可真熱鬧,春花似錦挡篓、人聲如沸婉陷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秽澳。三九已至闯睹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間担神,已是汗流浹背楼吃。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杏瞻,地道東北人所刀。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捞挥,于是被迫代替她去往敵國(guó)和親浮创。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 概述在iOS開(kāi)發(fā)中UITableView可以說(shuō)是使用最廣泛的控件砌函,我們平時(shí)使用的軟件中到處都可以看到它的影子斩披,類似...
    liudhkk閱讀 9,007評(píng)論 3 38
  • 一、簡(jiǎn)介 <<UITableView(或簡(jiǎn)單地說(shuō)讹俊,表視圖)的一個(gè)實(shí)例是用于顯示和編輯分層列出的信息的一種手段 <<...
    無(wú)邪8閱讀 10,589評(píng)論 3 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,092評(píng)論 1 32
  • 版權(quán)聲明:未經(jīng)本人允許,禁止轉(zhuǎn)載. 1. TableView初始化 1.UITableView有兩種風(fēng)格:UITa...
    蕭雪痕閱讀 2,908評(píng)論 2 10
  • 1 TableView編程指南學(xué)習(xí)筆記 1.1 At a Glance A table view is an ...
    Kevin_Junbaozi閱讀 847評(píng)論 0 3