UITableViewController在选中时不突出显示单元格

时间:2011-01-16 13:11:25

标签: iphone objective-c cocoa ipad

您好 我有一个简单的问题,我不知道如何回答。 在我的应用程序中,我有UITableViewController与单元格。当我选择一个项目(单元格)时,它会变得突出,而在其他线程中,我正在加载数据块以显示给用户(在加载完成后,推送新的VC)。当使用线程用户仍然可以与应用程序交互时,返回到其他NavController,我确实希望这发生。我不想发生的是,当加载不完整时,用户可以选择表中的其他单元格,并且它会被高亮显示。我怎么能阻止它(只有高亮,我正在检查是否有一个先前的请求,所以我没有把另一个线程放在先前的请求上)。

基本上我的问题是,你怎么能禁止用户与表视图控制器交互?

3 个答案:

答案 0 :(得分:2)

selectionStyle的{​​{1}}设置为UITableViewCell

答案 1 :(得分:1)

您可以使用以下内容检查是否可以选择行:

- (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];

答案 2 :(得分:0)

您的用户可能会感到困惑。一个亮点是不够的。应该有非常明确的视觉反馈,即网络操作正在进行,并且适用不同的规则。

  • 在用户选择行并在其中显示活动指示符后立即推送详细信息视图。
  • 或在为所选行加载数据时为整个表视图提供不同的外观:例如在所选行中显示活动指示符&隐藏所有其他的披露V形。执行此操作时,您可以将选择样式设置为“无”