Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如果tableview的行数超过了ipad屏幕上显示的行数,则didselectrowatindexpath方法无法正常工作_Iphone_Objective C_Ios_Ipad - Fatal编程技术网

Iphone 如果tableview的行数超过了ipad屏幕上显示的行数,则didselectrowatindexpath方法无法正常工作

Iphone 如果tableview的行数超过了ipad屏幕上显示的行数,则didselectrowatindexpath方法无法正常工作,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,当我选择一行时,我使用了didSelectRowAtIndexPath来放置复选标记指示器。我的表格视图显示在一个弹出窗口中,它有更多的数据可以容纳在屏幕中。问题是当我向下滚动查看更多行时,滚动时加载的第一个单元格也有复选标记指示器 例如,如果我的表视图中有30行,如果我选择了屏幕上的行,屏幕可以容纳15行。如果我滚动查看更多行,第16行也有复选标记。 类似地,如果我选择2行并向下滚动,第17行也会被选中 我一次只需要用户选择一行。我的didselectrowatindexpth工作不一致。如果

当我选择一行时,我使用了didSelectRowAtIndexPath来放置复选标记指示器。我的表格视图显示在一个弹出窗口中,它有更多的数据可以容纳在屏幕中。问题是当我向下滚动查看更多行时,滚动时加载的第一个单元格也有复选标记指示器

例如,如果我的表视图中有30行,如果我选择了屏幕上的行,屏幕可以容纳15行。如果我滚动查看更多行,第16行也有复选标记。 类似地,如果我选择2行并向下滚动,第17行也会被选中

我一次只需要用户选择一行。我的didselectrowatindexpth工作不一致。如果有人有合适的工作环境,请分享或建议我如何解决这个问题另外,我的表视图中有两个部分。因此,用户只能从任何一个部分中选择一行。

我的didSelectRowAtIndexPath代码

int newRow = [indexPath row];
int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;

if (newRow != oldRow || (newRow == 0 && oldRow == 0)) {
    UITableViewCell *cell = [bTableView cellForRowAtIndexPath:indexPath];
    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
    UITableViewCell *oldCell = [bTableView cellForRowAtIndexPath:lastIndexPath];
    oldCell.accessoryType = UITableViewCellAccessoryNone;
    lastIndexPath = indexPath;

您对单元格所做的任何更改都应该在
cellforrowatinedexpath
delegate方法中重置,因为它们是重复使用的。所以在这种方法中,在返回单元格之前重置。并有一个变量来保存选定的值并相应地更新。因此,基本上,您的数据源应该能够保存选定行的值,而不是单元格的值