1梦抢、//第一種方法:在選中時(shí)先遍歷整個(gè)可見單元格,設(shè)置所有行的默認(rèn)樣式愧哟,再設(shè)置選中的這行樣式奥吩,此方法不能取消單元格的選中
- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
NSArray*array = [tableViewvisibleCells];
for(UITableViewCell*cellinarray) {
[cellsetAccessoryType:UITableViewCellAccessoryNone];
cell.textLabel.textColor=[UIColorblackColor];
}
UITableViewCell*cell=[self.tableViewcellForRowAtIndexPath:indexPath];
cell.textLabel.textColor=[UIColorblueColor];
[cellsetAccessoryType:UITableViewCellAccessoryCheckmark];
}
此時(shí)只設(shè)定了在可見范圍內(nèi)選擇的是一行,還得設(shè)置滾動(dòng)后的選中狀態(tài)蕊梧,
-(void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath
{
NSIndexPath*index=[tableViewindexPathForSelectedRow];
if(index.row==indexPath.row&& index!=nil)
{
cell.backgroundColor=[UIColorcolorWithRed:232.0/255.0green:232.0/255.0blue:232.0/255.0alpha:1.0];
cell.textLabel.textColor=[UIColorcolorWithRed:0.0green:206.0/255.0blue:192.0/255.0alpha:1.0];
}
else
{
cell.backgroundColor=[UIColor clearColor];
cell.textLabel.textColor=[UIColor blackColor];
}
}
單元格是否相同需要用到比較方法
NSIndexPath*index=[tableViewindexPathForSelectedRow];
NSComparisonResultresult=[indexPathcompare:index];
2霞赫、//第二種方法:先定位到最后一行,若選中最后一行直接退出肥矢,否則用遞歸改變上次選中的狀態(tài)端衰,重新設(shè)置本次選中的狀態(tài)。
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
current=indexPath.row;
}
- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
if(indexPath.row==current){
return;
}
UITableViewCell*newCell = [tableViewcellForRowAtIndexPath:indexPath];
if(newCell.accessoryType==UITableViewCellAccessoryNone)
{
newCell.accessoryType=UITableViewCellAccessoryCheckmark;
newCell.textLabel.textColor=[UIColorblueColor];
}
NSIndexPath*oldIndexPath =[NSIndexPathindexPathForRow:current
inSection:0];
UITableViewCell*oldCell = [tableViewcellForRowAtIndexPath:oldIndexPath];
if(oldCell.accessoryType==UITableViewCellAccessoryCheckmark)
{
oldCell.accessoryType=UITableViewCellAccessoryNone;
oldCell.textLabel.textColor=[UIColorblackColor];
}
current=indexPath.row;
}
3.//方法三:設(shè)置一個(gè)全局變量甘改,選中的時(shí)候傳值旅东,然后通過(guò)重新加載數(shù)據(jù),使得在選中這行打勾十艾,其他行無(wú)樣式,此方法加載的時(shí)候第一行默認(rèn)打勾了
- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
current=indexPath.row;
[self.tableViewreloadData];
}
- (UITableViewCellAccessoryType)tableView:(UITableView*)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath*)indexPath
{
if(current==indexPath.row&¤t!=nil)
{
returnUITableViewCellAccessoryCheckmark;
}
else
{
returnUITableViewCellAccessoryNone;
}
}
或者直接在
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath里面設(shè)置
單元格的默認(rèn)高度為44
NSLog(@"%@",NSStringFromCGRect(cell.frame));
設(shè)置選中時(shí)的背景顏色可以用selectedbackgroundview設(shè)置