UITableView 设置cell选中状态的问题 UITableVeiwcell 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 uitableview本身就提供多选功能,选中的状态的管理不需要自己再维护。允许uitableivew多选设置一个属性就可以了,这时self.tableView.allowsMultipleSelectionDuringEditing=YES;[self.tableView setEditing:YES]; //////设置uitableview为编译状态/////同时还有一个属性保存了你当前选择的indexPath集合NSArray *indexPaths =[self.tableView indexPathsForSelectedRows]; //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢? 如果找不到系统提供的方法, 可以想想自己去实现。比如下面这个是不是你想要的效果?如果是这样的话, 你可以在didSelectRowAtIndexPath用一个NSUserDefaults来记录你的当前选择, 然后在cellForRowAtIndexPath中显示对应的效果, 比如这样:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellTableIdentifier = @"CellTableIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellTableIdentifier]; cell.selectionStyle = UITableViewCellSelectionStyleNone; //选中cell时无色 } cell.textLabel.text = voiceArr[indexPath.row]; if ([[[NSUserDefaults standardUserDefaults]valueForKey:APP_CHANGEVOICE] isEqualToString:[resuleArr objectAtIndex:indexPath.row]]) { cell.accessoryType = UITableViewCellAccessoryCheck; } else { cell.accessoryType = UITableViewCellAccessoryNone; } return cell;}- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ [[NSUserDefaults standardUserDefaults]setValue:[resuleArr objectAtIndex:indexPath.row] forKey:APP_CHANGEVOICE]; AudioServicesPlaySystemSound([[resuleArr objectAtIndex:indexPath.row]integerValue]); [myTableView reloadData];} //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?没碰到你说的情况, 打个包我帮你看看 是否是因为你设置cell选中的方式不对。你通过cell.selected=YES;设置成选中状态,那么在点击这行时,由于不是通过代理方法didSelectRowAtIndexPath 来选中的,所以在触发这个代理方式的时候,会被再次选中,当再点击时,uitableview内部维护了一个状态,根据这个状态在点击时就会自动调用回调方法deSelectRowAtIndexPath. 这是我的理解。所以如果是我说的这样的话,那么你在设置某个cell被选中的时候就不能通过代码cell.selected=YES;来实现了,你需要,如下伪代码-(void)viewDidAppear:(BOOL)animated { //////之所以在viewDidAppear中来设置某个cell被初始选中,目的是要在uitableview加载出来以后再做 [super viewDidAppear:animated]; //////这里假设你初始要选中的是第一行 NSIndexPath *indexPath =[NSIndexPath indexPathForRow:0 inSection:0]; [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];} //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?没碰到你说的情况, 打个包我帮你看看是发你的邮箱吗? 代码很少的 //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?没碰到你说的情况, 打个包我帮你看看是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected] //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?楼主的问题我也遇到过-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if (lastPath == indexPath) { return; } //lastPath在cell for row中 加载时当前indexpath,本函数中indexaPath为选中的path UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastPath]; lastCell.accessoryType = UITableViewCellAccessoryNone; UITableViewCell *currentCell = [tableView cellForRowAtIndexPath:indexPath]; currentCell.accessoryType = UITableViewCellAccessoryCheck; lastPath = indexPath; currentCell.selectionStyle = UITableViewCellSelectionStyleNone;//cell选中的背景风格}lastPath在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中 lastPath = indexPath; //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?没碰到你说的情况, 打个包我帮你看看是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]发了 谢谢了 //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?楼主的问题我也遇到过-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if (lastPath == indexPath) { return; } //lastPath在cell for row中 加载时当前indexpath,本函数中indexaPath为选中的path UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastPath]; lastCell.accessoryType = UITableViewCellAccessoryNone; UITableViewCell *currentCell = [tableView cellForRowAtIndexPath:indexPath]; currentCell.accessoryType = UITableViewCellAccessoryCheck; lastPath = indexPath; currentCell.selectionStyle = UITableViewCellSelectionStyleNone;//cell选中的背景风格}lastPath在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中 lastPath = indexPath;这个是不是单选的 选另一行的时候就让上的变为未选中. 我的问题不是这样的 我的问题是多选的假如一开始都没有cell选中的时候 点击某个cell它就会再左边打勾 然后cell为高亮状态 然后调用tableView:didSelectRowAtIndexPath 这个方法但是如果一开始某个cell是选中状态(创建cell的时候cell.selected = yes),我点击这个cell 情况和上面是一样的,左边的勾没有消失也是调用上面的方法,点击第二次的时候左边的勾才消失,然后调用 tableView:didDeselectRowAtIndexPath 这个方法 //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?没碰到你说的情况, 打个包我帮你看看是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]发了 谢谢了已回复。你去邮箱查一下吧。 //我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?没碰到你说的情况, 打个包我帮你看看是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]发了 谢谢了已回复。你去邮箱查一下吧。太感谢了,解决了,接受建议,以后会多动手的 cocos2d-x操作xml后进行保存,结果xml中没有变化 mac的基础问题求教 苹果的开发文档 怎样找出NSString中字母 数字 中文 特殊字符的个数? 如何做iphone的蓝牙设备 iOS开发中,iPhone6 适配方法、iPhone6自动适配技巧 新手求助:为什么layoutSubview方法不调用? iOS 怎么在launchscreen.xib中添加图片? 一个视图以动画的形式转换到另外一个视图 IOS9各种兼容问题,苦死我了,求救 IOS8 全屏的界面调用系统的相册或者拍照返回的时候,状态栏隐藏不了 设置UIStoryBoard的rootVC
self.tableView.allowsMultipleSelectionDuringEditing=YES;
[self.tableView setEditing:YES]; //////设置uitableview为编译状态/////同时还有一个属性保存了你当前选择的indexPath集合
NSArray *indexPaths =[self.tableView indexPathsForSelectedRows];
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
比如下面这个是不是你想要的效果?
如果是这样的话, 你可以在didSelectRowAtIndexPath用一个NSUserDefaults来记录你的当前选择, 然后在cellForRowAtIndexPath中显示对应的效果, 比如这样:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellTableIdentifier = @"CellTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellTableIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone; //选中cell时无色
}
cell.textLabel.text = voiceArr[indexPath.row];
if ([[[NSUserDefaults standardUserDefaults]valueForKey:APP_CHANGEVOICE] isEqualToString:[resuleArr objectAtIndex:indexPath.row]])
{
cell.accessoryType = UITableViewCellAccessoryCheck;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
} return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[[NSUserDefaults standardUserDefaults]setValue:[resuleArr objectAtIndex:indexPath.row] forKey:APP_CHANGEVOICE];
AudioServicesPlaySystemSound([[resuleArr objectAtIndex:indexPath.row]integerValue]);
[myTableView reloadData];
}
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
没碰到你说的情况, 打个包我帮你看看
//////之所以在viewDidAppear中来设置某个cell被初始选中,目的是要在uitableview加载出来以后再做
[super viewDidAppear:animated]; //////这里假设你初始要选中的是第一行
NSIndexPath *indexPath =[NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
没碰到你说的情况, 打个包我帮你看看
是发你的邮箱吗? 代码很少的
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
没碰到你说的情况, 打个包我帮你看看
是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
楼主的问题我也遇到过
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (lastPath == indexPath) {
return;
}
//lastPath在cell for row中 加载时当前indexpath,本函数中indexaPath为选中的path
UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastPath];
lastCell.accessoryType = UITableViewCellAccessoryNone;
UITableViewCell *currentCell = [tableView cellForRowAtIndexPath:indexPath];
currentCell.accessoryType = UITableViewCellAccessoryCheck;
lastPath = indexPath;
currentCell.selectionStyle = UITableViewCellSelectionStyleNone;//cell选中的背景风格
}
lastPath在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中 lastPath = indexPath;
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
没碰到你说的情况, 打个包我帮你看看
是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
发了 谢谢了
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
楼主的问题我也遇到过
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (lastPath == indexPath) {
return;
}
//lastPath在cell for row中 加载时当前indexpath,本函数中indexaPath为选中的path
UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastPath];
lastCell.accessoryType = UITableViewCellAccessoryNone;
UITableViewCell *currentCell = [tableView cellForRowAtIndexPath:indexPath];
currentCell.accessoryType = UITableViewCellAccessoryCheck;
lastPath = indexPath;
currentCell.selectionStyle = UITableViewCellSelectionStyleNone;//cell选中的背景风格
}
lastPath在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中 lastPath = indexPath;
这个是不是单选的 选另一行的时候就让上的变为未选中. 我的问题不是这样的 我的问题是多选的
假如一开始都没有cell选中的时候 点击某个cell它就会再左边打勾 然后cell为高亮状态 然后调用tableView:didSelectRowAtIndexPath 这个方法
但是如果一开始某个cell是选中状态(创建cell的时候cell.selected = yes),我点击这个cell 情况和上面是一样的,左边的勾没有消失也是调用上面的方法,点击第二次的时候左边的勾才消失,然后调用 tableView:didDeselectRowAtIndexPath 这个方法
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
没碰到你说的情况, 打个包我帮你看看
是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
发了 谢谢了已回复。你去邮箱查一下吧。
我现在有个问题就是 一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾) 然后我点击这个cell让他不选中
但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失 怎么然他一开始是选中的后点一下它就变为不选中呢?
没碰到你说的情况, 打个包我帮你看看
是发你的邮箱吗? 代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
发了 谢谢了已回复。你去邮箱查一下吧。
太感谢了,解决了,接受建议,以后会多动手的