OGeek|极客世界-中国程序员成长平台

标题: ios - 在UITableView ios的每个部分中选择一行? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:36
标题: ios - 在UITableView ios的每个部分中选择一行?

场景:

我在一个 UITableView 中创建了 2 个部分,用户需要在每个部分中选择一行,如下面的屏幕截图所示。

预期结果: 1.用户应该能够在每个部分中选择一行

现在的结果: 1.在我选择了一个部分中的行之后,然后当我选择第二部分中的行时,第一个选择消失了。

这是我的代码:

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath {
    // Uncheck the previous checked row

    long sec=indexPath.section;
     if(sec==0){
    if(self->checkedIndexPath)
    {
        UITableViewCell* uncheckCell = [tableView
                                        cellForRowAtIndexPath:self->checkedIndexPath];
        uncheckCell.accessoryType = UITableViewCellAccessoryNone;
    }
    if([self->checkedIndexPath isEqual:indexPath])
    {
        self->checkedIndexPath = nil;
    }
    else
    {
        UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        self->checkedIndexPath = indexPath;
    }}

    if(sec==1){

        if(self->checkedIndexPath)
        {
            UITableViewCell* uncheckCell = [tableView
                                            cellForRowAtIndexPath:self->checkedIndexPath];
            uncheckCell.accessoryType = UITableViewCellAccessoryNone;
        }
        if([self->checkedIndexPath isEqual:indexPath])
        {
            self->checkedIndexPath = nil;
        }
        else
        {
            UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            self->checkedIndexPath = indexPath;
        }

    }

}

感谢您的帮助。



Best Answer-推荐答案


这是最简单的方法。 最后我找到了解决方案。它对我有用,希望它对你有用。 声明这些

@interface ViewController ()
{
    int selectedsection;
    NSMutableArray *selectedindex;

}

如下替换didSelectRowAtIndexPath:

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath {
    // Uncheck the previous checked row

    NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

        if(self.checkedIndexPath)

        {

            for (int i=0; i<[selectedindex count]; i++) {

                NSIndexPath *temp= [selectedindex objectAtIndex:i];
                if (temp.section==selectedIndexPath.section) {
                    UITableViewCell* uncheckCell = [tableView
                                                    cellForRowAtIndexPath:temp];
                    uncheckCell.accessoryType = UITableViewCellAccessoryNone;

                }
            }

            NSInteger numb= [tableView numberOfRowsInSection:selectedIndexPath.section];

            if (selectedsection==selectedIndexPath.section) {


            UITableViewCell* uncheckCell = [tableView
                                            cellForRowAtIndexPath:self.checkedIndexPath];
            uncheckCell.accessoryType = UITableViewCellAccessoryNone;

            }
        }



        if([self.checkedIndexPath isEqual:indexPath])
        {
            for (int i=0; i<[selectedindex count]; i++) {

                NSIndexPath *temp= [selectedindex objectAtIndex:i];
                if (temp.section==selectedIndexPath.section) {
                    UITableViewCell* uncheckCell = [tableView
                                                    cellForRowAtIndexPath:temp];
                    uncheckCell.accessoryType = UITableViewCellAccessoryNone;

                }
            }


           self.checkedIndexPath = nil;
        }
        else
        {
            for (int i=0; i<[selectedindex count]; i++) {

                NSIndexPath *temp= [selectedindex objectAtIndex:i];
                if (temp.section==selectedIndexPath.section) {
                    UITableViewCell* uncheckCell = [tableView
                                                    cellForRowAtIndexPath:temp];
                    uncheckCell.accessoryType = UITableViewCellAccessoryNone;

                }
            }

            UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            self.checkedIndexPath = indexPath;
            [selectedindex addObject:indexPath];
            selectedsection=indexPath.section;

            NSLog(@"check");
        }






}

关于ios - 在UITableView ios的每个部分中选择一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838390/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4