【发布时间】:2012-02-19 20:21:26
【问题描述】:
我正在使用 XCode4.2 开发故事板应用程序
在单击行以蓝色突出显示并加载新视图后,我正在基于 UITableView 中的单击切换视图。
当我返回原始视图时,该行仍以蓝色突出显示...我该如何禁用它?
【问题讨论】:
标签: objective-c uitableview xcode4.2 storyboard
我正在使用 XCode4.2 开发故事板应用程序
在单击行以蓝色突出显示并加载新视图后,我正在基于 UITableView 中的单击切换视图。
当我返回原始视图时,该行仍以蓝色突出显示...我该如何禁用它?
【问题讨论】:
标签: objective-c uitableview xcode4.2 storyboard
我这样做
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath];
}
这样我就有了每次选择的索引路径。
【讨论】:
使用deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated函数在uitableview中取消选择行
在你的 viewWillAppear 函数中调用它
[yourTableView deselectRowAtIndexPath:selectedIndexPath animated:NO];
如果您不确定上次选择的是哪个索引,您可以在表中的所有索引路径上运行循环。
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
for(int i = 0; i <= [yourArr count]; i++)
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
[yourTableView deselectRowAtIndexPath:indexPath animated:NO];
}
}
注意:由于我不知道您的确切代码....您需要根据需要修改上述代码。
【讨论】:
UITableViewController 会自动执行此操作。否则,在您的 viewDidAppear 中,您需要在表视图上调用 - (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated。
【讨论】:
deselectRowAtIndexPath 是UITableView 的成员。
viewDidAppear 调用它。