在我的应用程序中,我有一个包含大约八个单元格的表格视图。顶部有一个导航栏。当用户触摸一个单元时,大约1/2秒没有任何反应。然后,触摸的单元格突出显示蓝色,并立即将新视图滑动到位。
问题是,在新视图滑动到位之前,没有反馈用户关于他触摸了哪个单元格,直到 。
例如,当我在iPhone的“设置”应用程序中浏览表格时,当您触摸单元格时,单元格立即变为蓝色,然后有1/2秒延迟,然后您看到新观点。
如何获得我的表格反馈,突出显示要立即发生的细胞?我正在使用tableView didSelectRowAtIndexPath:,每个单元格都有一个附件按钮。
感谢您的任何见解。
答案 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];
首先应该在处理其他程序逻辑之前突出显示该单元格。