我正在处理 tableview 多选,取消选择。
我有 3 个表格 View (带有标签 400 的表格 View 我需要多项选择和
取消选择 -> alllMumbaiTableview)
我的问题:当我选择多行时,UITableViewCellAccessoryCheckmark 消失了
滚动表格 View 后。但是这里我可以看到那些细胞还在
仅选中状态,但不显示 UITableViewCellAccessoryCheckmark 。
滚动后我的表格是这样的
这是我的代码
@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-推荐答案 strong>
我想建议使用每个不同的单元格标识符。我不知道如何设置 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/
|