tableView的单选问题
在我們開發(fā)的過程中,很多時候用到tableview的單選問題,具體就是我們點擊某個cell后面顯示對號,再次點擊對號消失.如果我們只是單純的添加對號,就會導致cell從復用池里面取的時候,后面的對號也會自動的添加上,這就與我們的初衷相違背,那么我們要怎么做呢;下面我就來介紹一種簡單的單選問題的解決方案
原理:
首先建一個可變數(shù)組,數(shù)組里面存儲的數(shù)據(jù)是用來標記cell的選擇狀態(tài),0代表沒有被選擇,1代表被選擇
數(shù)組的數(shù)據(jù)的個數(shù)和cell上添加的數(shù)據(jù)的個數(shù)保持一致
值得注意的是:
1:點擊的時候,先判斷對應(yīng)的存放標識的數(shù)組,如果是0說明我們點擊的是一個新的cell,此時我們就要將數(shù)組里面所有的數(shù)換成0然后執(zhí)行點擊某個將某個替換成1的操作
2:當點擊的是1的時候就不需要,直接將1替換成0就可以了
3:選擇完成之后我們需要刷新一些tableview就可以了
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];if ([tagArray[indexPath.row] isEqualToString:@"0"]) {NSInteger number = tagArray.count;[tagArray removeAllObjects];for (int i = 0; i < number; i++) {[tagArray addObject:@"0"];}cell.accessoryType = UITableViewCellAccessoryCheckmark;[tagArray replaceObjectAtIndex:indexPath.row withObject:@"1"];[tableView reloadData];} else if ([tagArray[indexPath.row] isEqualToString:@"1"]) {[tagArray replaceObjectAtIndex:indexPath.row withObject:@"0"];cell.accessoryType = UITableViewCellAccessoryNone;}}然后 在cell的創(chuàng)建里面,我們需要對對應(yīng)的標識數(shù)組進行判斷,然后我們判斷其是否被選擇
if ([tagArray[indexPath.row] isEqualToString:@"0"]) {cell.accessoryType = UITableViewCellAccessoryNone;} else {cell.accessoryType = UITableViewCellAccessoryCheckmark;}這樣我們就完成了簡單的單選
解決這類問題還有其他的方法,比如我們在對cell進行賦值的時候.我們用的是model.那么此時我們就可以在model里面添加一條新的屬性,這個屬性專門是用來標記cell的選擇狀態(tài)
?
轉(zhuǎn)載于:https://www.cnblogs.com/nsjelly/p/4512251.html
總結(jié)
以上是生活随笔為你收集整理的tableView的单选问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: dedecms /plus/feedba
 - 下一篇: LeetCode--Factorial