繁体   English   中英

UITableViewController选中时未突出显示单元格

[英]UITableViewController not highlighting cell when it's selected

嗨,我有一个简单的问题,我不知道该怎么回答。 在我的应用程序中,我有带有单元格的UITableViewController。 当我选择一个项目(单元格)时,它变得亮了,而在其他线程中,我正在加载要显示给用户的数据块(加载完成后,将推送新的VC)。 使用线程执行操作时,用户仍然可以与应用程序进行交互,例如回到其他NavController,我确实希望这种情况发生。 我不希望发生的是,当加载未完成时,用户可以选择表中的其他单元格,并且该单元格会升高。 我如何防止这种情况发生(仅高亮显示,我正在检查是否有先前的请求,因此在完成先前的请求之前,我不会放置其他线程)。

因此,基本上我的问题是,如何禁止用户与表视图控制器进行交互?

UITableViewCellselectionStyle设置为UITableViewCellSelectionStyleNone

您可以使用以下命令检查是否可以选择行:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

         if (rowSelected) {
              return nil;
         }

         return indexPath; 
    }

因此,仅当未选择任何行时才选择它。 在您的didSelectRowAtIndexPath方法中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

rowSelected = YES;
// call method that is going to do something and mark rowSelected = NO; 
}

您可以使用取消选择该行

[[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];

您的用户可能会感到困惑。 突出显示还不够。 应该有非常清晰的视觉反馈,表明网络正在运行并且适用不同的规则。

  • 在用户选择一行后立即按详细信息视图并在其中显示活动指示器。
  • 或在为所选行加载数据时给整个表视图一个不同的外观:例如,在所选行中显示活动指示器,并在所有其他行中隐藏披露人字形。 在此过程中,您可以将选择样式设置为“无”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM