我的表格单元格在触摸时不会立即突出显示

时间:2009-07-10 22:21:55

标签: iphone cocoa-touch

在我的应用程序中,我有一个包含大约八个单元格的表格视图。顶部有一个导航栏。当用户触摸一个单元时,大约1/2秒没有任何反应。然后,触摸的单元格突出显示蓝色,并立即将新视图滑动到位。

问题是,在新视图滑动到位之前,没有反馈用户关于他触摸了哪个单元格,直到

例如,当我在iPhone的“设置”应用程序中浏览表格时,当您触摸单元格时,单元格立即变为蓝色,然后有1/2秒延迟,然后您看到新观点。

如何获得我的表格反馈,突出显示要立即发生的细胞?我正在使用tableView didSelectRowAtIndexPath:,每个单元格都有一个附件按钮。

感谢您的任何见解。

4 个答案:

答案 0 :(得分:1)

您使用的是自定义绘制的单元格(使用drawRect覆盖)还是类似的东西?

如果您有自定义的drawRect方法,则需要执行以下操作(基于tweetie的代码,找到here):


//default colors for cell
UIColor *backgroundColor = [UIColor whiteColor];
UIColor *textColor = [UIColor blackColor];

//on highlight, swap colors
if(self.highlighted){
    backgroundColor = [UIColor clearColor];
    textColor = [UIColor whiteColor];
}

应该为您提供默认行为。

答案 1 :(得分:0)

听起来好像处理新幻灯片后屏幕会刷新。您需要在渲染新的幻灯片视图之前刷新屏幕。

答案 2 :(得分:0)

一些事情:

最好在beforeViewController中有一个属性,这样它就可以在加载时设置自己的标题(而不是从父类设置它)。

第二,为什么要为当前班级设置后退按钮?你也泄漏了(你分配了UIBarButtonItem但是没有释放它)。


NewViewController *newViewController = [[[NewViewController alloc]
initWithNibName:@"New" bundle:nil] autorelease];
newViewController.name = [self.listData objectAtIndex:indexPath.row];
[self.navigationController pushViewController:beforeAfterViewController animated:YES]; 

然后在NewViewController中,你有


- (void) viewDidLoad{
    self.title = self.name;
}


re:你的第二个问题:如果你使用[self.navigationController popViewControllerAnimated:YES]弹出子控制器,父视图应该自动取消选择之前选择的行。它会保持选择,除非你强迫它保持这种状态。

你不需要像[self.tableView deselectRowAtIndexPath:]那样做任何事情,除非你没有推动子视图(并做一些像用户点击的单元格勾选标记)。

答案 3 :(得分:0)

您可以将这两行代码放在didSelectRowAtIndexPath方法的开头:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:YES animated:YES];

首先应该在处理其他程序逻辑之前突出显示该单元格。