OStack程序员社区-中国程序员成长平台

标题: ios - 滚动表格 View 后 UITableViewCellAccessoryCheckmark 消失 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 16:26
标题: ios - 滚动表格 View 后 UITableViewCellAccessoryCheckmark 消失

我正在处理 tableview 多选,取消选择。

我有 3 个表格 View (带有标签 400 的表格 View 我需要多项选择和 取消选择 -> alllMumbaiTableview)

我的问题:当我选择多行时,UITableViewCellAccessoryCheckmark 消失了 滚动表格 View 后。但是这里我可以看到那些细胞还在 仅选中状态,但不显示 UITableViewCellAccessoryCheckmark

enter image description here

滚动后我的表格是这样的

enter image description here

这是我的代码

@property (nonatomic, strong) NSMutableArray *arrIndexpaths;

UItableview 方法 -

- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath
 {

       static NSString *simpleTableIdentifier = @"SimpleTableItem";
       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];


         if(tableView.tag == 100)
        {
              cell.textLabel.text = [typeArray objectAtIndex:indexPath.row];
        }
        else if (tableView.tag == 300)
        {
              cell.textLabel.text = [specialityArray objectAtIndex:indexPath.row];
        }
        else if (tableView.tag == 400)
        {
                if (cell == nil)
                {

                    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];

                }
                if ([self.arrIndexpaths containsObject:[NSIndexSet indexSetWithIndex:indexPath.row]])
                {
                    cell.accessoryType = UITableViewCellAccessoryCheckmark;
                }
                else
                {
                    cell.accessoryType = UITableViewCellAccessoryNone;
                }

                    cell.textLabel.text = [allMumbaiArray objectAtIndex:indexPath.row];

        }
    return  cell;

 }

 - (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath
   {


        if(tableView.tag == 100)
        {
            _typeTextfield.text=[typeArray objectAtIndex:indexPath.row];
            _typeTableview.hidden = YES;
        }
        else if (tableView.tag == 300)
        {
            _specialityTextield.text=[specialityArray objectAtIndex:indexPath.row];
            _specialityTableview.hidden = YES;
        }
        else if (tableView.tag == 400)
        {

            UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
            tableViewCell.accessoryType = UITableViewCellAccessoryCheckmark;
            [self.arrIndexpaths addObject:[NSIndexSet indexSetWithIndex:indexPath.row]];
        }

 }
- (void)tableViewUITableView *)tableView didDeselectRowAtIndexPathNSIndexPath *)indexPath
  {
    if (tableView.tag == 400)
    {
        UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
        tableViewCell.accessoryType = UITableViewCellAccessoryNone;
        [self.arrIndexpaths removeObject:[NSIndexSet indexSetWithIndex:indexPath.row]];

    }

  }

我想要什么:

1) 我想要 UITableViewCellAccessoryCheckmark 即使在滚动表格 View 之后(但是当我选择一个时不应该选择其他行。我以前的问题 -> Selecting one UITableViewCell selects the other cell after scrolling)

2) 我只需要将所有选定的值放入单个数组中。



Best Answer-推荐答案


我想建议使用每个不同的单元格标识符。我不知道如何设置 tableviews 布局,但它看起来 tableviewcell 队列替换了其他单元格,与您在上面实现的不同。

static NSString *simpleTableIdentifier = @"SimpleTableItem";

if(tableView.tag == 100)
{
    simpleTableIdentifier = @"SimpleTableItem";
}
else if (tableView.tag == 300)
{
    simpleTableIdentifier = @"SimpleTableItem1";
}
else if (tableView.tag == 400) {

    simpleTableIdentifier = @"SimpleTableItem2";
}

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

更新最终结果

#import "ViewController.h"

@interface ViewController () <UITableViewDataSource, UITableViewDelegate> {
    NSArray *tmpArray;
}

@property(nonatomic, weak) IBOutlet UITableView *tableView1, *tableView2, *tableView3;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    tmpArray = @[[NSNumber numberWithInt:2],[NSNumber numberWithInt:3]];

    [self.view bringSubviewToFront:self.tableView1];
    [self.view bringSubviewToFront:self.tableView2];
    [self.view bringSubviewToFront:self.tableView3];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (NSInteger)tableViewUITableView *)tableView numberOfRowsInSectionNSInteger)section {
    return 20;
}

- (UITableViewCell*)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath {

    static NSString *simpleTableIdentifier = @"SimpleTableItem";

    if (self.tableView1 == tableView)
    {
        simpleTableIdentifier = @"SimpleTableItem";
    }
    else if (self.tableView2 == tableView)
    {
        simpleTableIdentifier = @"SimpleTableItem1";
    }
    else if (self.tableView3 == tableView) {

        simpleTableIdentifier = @"SimpleTableItem2";
    }


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];
    }

    if (self.tableView1 == tableView)
    {
        cell.textLabel.text = @"tableView1";
    }
    else if (self.tableView2 == tableView)
    {
        cell.textLabel.text = @"tableView2";
    }
    else if (self.tableView3 == tableView) {

        if ([tmpArray objectAtIndex:0] == [NSNumber numberWithInt:(int)indexPath.row] ||
            [tmpArray objectAtIndex:1] == [NSNumber numberWithInt:(int)indexPath.row] ) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        } else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }

        cell.textLabel.text = @"tableView3";
    }

    return  cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 70;
}

关于ios - 滚动表格 View 后 UITableViewCellAccessoryCheckmark 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32859875/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4