iOS tableView實現(xiàn)單選和多選的實例代碼

tableView的單選需求啦撮,demo實現(xiàn)了簡單的單選和多選兩個功能艇纺,效果圖:


1:首先實現(xiàn)下單選

1:使用一個變量記錄選中的行

@property (assign, nonatomic) NSIndexPath??? *selIndex;?? //單選選中的行

2:設置tableView數(shù)據(jù),共2組,每組10行,

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {??

return 2;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {?

?return 10;

}

3:實現(xiàn)tableView的點擊方法,每次點擊記錄點擊的索引,取消之前的選擇行,將當前選擇的行打鉤

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{????

?//取消之前的選擇????

UITableViewCell *celled = [tableView cellForRowAtIndexPath:_selIndex];??

celled.accessoryType = UITableViewCellAccessoryNone;?????//記錄當前的選擇的位置 ?

?_selIndex = indexPath;?????//當前選擇的打鉤 ?

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];????

cell.accessoryType = UITableViewCellAccessoryCheckmark;

}

4:列表滾動時,判斷是否為選中的行,如果是cell是選中的那一行,就設置cell的accessoryType為UITableViewCellAccessoryCheckmark,到這里單選就實現(xiàn)完成了

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {???

static NSString *cellid = @"cellid";??

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid];

if (cell == nil) {???

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];??

}??

cell.textLabel.text = [NSString stringWithFormat:@"第%zi組,第%zi行",indexPath.section+1,indexPath.row];???

if (_selIndex == indexPath) {?????

cell.accessoryType = UITableViewCellAccessoryCheckmark;??

}else{????

cell.accessoryType = UITableViewCellAccessoryNone;??

}??

return cell;

}

2:下面實現(xiàn)多選

1:使用一個數(shù)組記錄選中的行

@property (strong, nonatomic) NSMutableArray? *selectIndexs; //多選選中的行

2:使用一個變量判斷是單選還是多選狀態(tài)

@property (nonatomic, assign) BOOL?????? isSingle;??? //單選還是多選

3:導航欄右側(cè)按鈕設置為單選和雙選的切換按鈕,并初始化多選記錄數(shù)組

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithTitle:@"多選" style:UIBarButtonItemStylePlain target:self action:@selector(singleSelect)];

self.navigationItem.rightBarButtonItem = rightItem;???//初始化多選數(shù)組 ?_selectIndexs = [NSMutableArray new];

4:點擊導航欄上的切換按鈕切換單選還是多選狀態(tài)

//單選還是多選按鈕點擊事件

-(void)singleSelect{

_isSingle = !_isSingle; ?

if (_isSingle) {????

self.navigationItem.rightBarButtonItem.title = @"多選";????

self.title = @"(單選)";????//切換為單選的時候,清除多選數(shù)組,重新加載列表

[self.selectIndexs removeAllObjects]; ? ?

[self.tableView reloadData];??

}else{????

self.title = @"(多選)";????

self.navigationItem.rightBarButtonItem.title = @"單選";??

}

}

5:為tableView的點擊方法中加上單選還是多選的狀態(tài)判斷,多選的話,將點擊的行加入到多選索引數(shù)組中去,然后改變該行的cell.accessoryType,重復點擊就做反操作

//選中某一行

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{???if (_isSingle) {???

//單選???

//取消之前的選擇????

UITableViewCell *celled = [tableView cellForRowAtIndexPath:_selIndex]; ?celled.accessoryType = UITableViewCellAccessoryNone;?????//記錄當前的選擇的位置 ? ?

_selIndex = indexPath;?????//當前選擇的打鉤 ? ?

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

cell.accessoryType = UITableViewCellAccessoryCheckmark; ??

}else{??????????

//多選????

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];?????

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {

//如果為選中狀態(tài)??????

cell.accessoryType = UITableViewCellAccessoryNone; //切換為未選中

[_selectIndexs removeObject:indexPath]; //數(shù)據(jù)移除 ? ?

}else {

//未選中??????

cell.accessoryType = UITableViewCellAccessoryCheckmark; //切換為選中

[_selectIndexs addObject:indexPath]; //添加索引數(shù)據(jù)到數(shù)組 ? ?

}??

}

}

6:在cellForRow代理方法中同樣加入單選多選的判斷,在滾動列表是加載列表,判斷是否選中

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {???

static NSString *cellid = @"cellid";??

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid];??if (cell == nil) {????

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];??

}??

cell.textLabel.text = [NSString stringWithFormat:@"第%zi組,第%zi行",indexPath.section+1,indexPath.row];???

if (_isSingle) {?????

//單選????

if (_selIndex == indexPath) {??????

cell.accessoryType = UITableViewCellAccessoryCheckmark;????

}else{ ? ?

cell.accessoryType = UITableViewCellAccessoryNone;????

}????

return cell;??

}else{??????????

//多選????

cell.accessoryType = UIAccessibilityTraitNone;????

for (NSIndexPath *index in _selectIndexs) {??????

if (indexPath == index) {????????

cell.accessoryType = UITableViewCellAccessoryCheckmark;??????

}????

}??

}??

return cell;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗜侮,一起剝皮案震驚了整個濱河市役纹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尸饺,老刑警劉巖隧饼,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沈堡,死亡現(xiàn)場離奇詭異,居然都是意外死亡燕雁,警方通過查閱死者的電腦和手機诞丽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門鲸拥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人僧免,你說我怎么就攤上這事刑赶。” “怎么了懂衩?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵撞叨,是天一觀的道長。 經(jīng)常有香客問我浊洞,道長牵敷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任法希,我火速辦了婚禮劣领,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铁材。我一直安慰自己,他們只是感情好奕锌,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布著觉。 她就那樣靜靜地躺著,像睡著了一般惊暴。 火紅的嫁衣襯著肌膚如雪饼丘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天辽话,我揣著相機與錄音肄鸽,去河邊找鬼。 笑死油啤,一個胖子當著我的面吹牛典徘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播益咬,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逮诲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了幽告?” 一聲冷哼從身側(cè)響起梅鹦,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冗锁,沒想到半個月后齐唆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡冻河,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年箍邮,在試婚紗的時候發(fā)現(xiàn)自己被綠了茉帅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡媒殉,死狀恐怖担敌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情廷蓉,我是刑警寧澤全封,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站桃犬,受9級特大地震影響刹悴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攒暇,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一土匀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧形用,春花似錦就轧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镇饺,卻和暖如春乎莉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奸笤。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工惋啃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人监右。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓边灭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親健盒。 傳聞我的和親對象是個殘疾皇子存筏,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

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