解决方案 »

  1.   

    uitableview本身就提供多选功能,选中的状态的管理不需要自己再维护。允许uitableivew多选设置一个属性就可以了,这时
    self.tableView.allowsMultipleSelectionDuringEditing=YES;
    [self.tableView setEditing:YES]; //////设置uitableview为编译状态/////同时还有一个属性保存了你当前选择的indexPath集合
    NSArray *indexPaths =[self.tableView indexPathsForSelectedRows];
      

  2.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾)  然后我点击这个cell让他不选中
    但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失  怎么然他一开始是选中的后点一下它就变为不选中呢?
      

  3.   

    如果找不到系统提供的方法, 可以想想自己去实现。
    比如下面这个是不是你想要的效果?
    如果是这样的话, 你可以在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];
    }
      

  4.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾)  然后我点击这个cell让他不选中
    但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失  怎么然他一开始是选中的后点一下它就变为不选中呢?

    没碰到你说的情况, 打个包我帮你看看
      

  5.   

    是否是因为你设置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];
    }
      

  6.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾)  然后我点击这个cell让他不选中
    但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失  怎么然他一开始是选中的后点一下它就变为不选中呢?

    没碰到你说的情况, 打个包我帮你看看
    是发你的邮箱吗?  代码很少的
      

  7.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾)  然后我点击这个cell让他不选中
    但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失  怎么然他一开始是选中的后点一下它就变为不选中呢?

    没碰到你说的情况, 打个包我帮你看看
    是发你的邮箱吗?  代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
      

  8.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个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;
      

  9.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾)  然后我点击这个cell让他不选中
    但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失  怎么然他一开始是选中的后点一下它就变为不选中呢?

    没碰到你说的情况, 打个包我帮你看看
    是发你的邮箱吗?  代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
    发了    谢谢了
      

  10.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个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 这个方法
      

  11.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾)  然后我点击这个cell让他不选中
    但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失  怎么然他一开始是选中的后点一下它就变为不选中呢?

    没碰到你说的情况, 打个包我帮你看看
    是发你的邮箱吗?  代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
    发了    谢谢了已回复。你去邮箱查一下吧。
      

  12.   

    //
    我现在有个问题就是  一开始显示表格的时候就让某一个cell是选中的状态(左边有个勾)  然后我点击这个cell让他不选中
    但是 每次我都要点击两次 那个cell的选中状态(就是个勾)才会消失  怎么然他一开始是选中的后点一下它就变为不选中呢?

    没碰到你说的情况, 打个包我帮你看看
    是发你的邮箱吗?  代码很少的我上面又回答了,你先按我说的再试试,还不行的话,你就发我邮箱吧[email protected]
    发了    谢谢了已回复。你去邮箱查一下吧。
    太感谢了,解决了,接受建议,以后会多动手的