我有UITableViewCell
的自定义子类。我通过设置UILabel
的外观代理的一些属性来自定义单元格中包含的标签,如下所示:
[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].textColor = [UIColor blackColor];
[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].highlightedTextColor = [UIColor redColor];
当我在UI中选择单元格时,标签的颜色会按预期更改,并且代码会对下一个视图控制器执行推送。但是,当我弹出这个新的视图控制器并使用自定义UITableViewCell
返回到屏幕时,即使我在代码中取消选择单元格,突出显示的文本颜色仍然如下:
- (void)viewDidAppear:(BOOL)animated
{
if ([self.tableView indexPathForSelectedRow]) {
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}
[super viewDidAppear:animated];
}
这是iOS 7中的错误还是我做错了什么?
答案 0 :(得分:0)
我不会把它称为错误,但有办法解决它。
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:YES];
if ([self.tableView indexPathForSelectedRow]) {
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}
}
答案 1 :(得分:0)
UIView
为contentView
UITableViewCell
,而UITableView
位于UIPopoverController
。如果我在解雇后重新打开弹出窗口,则选择突出显示不会清除。
我确实尝试了这里提到的两种解决方案,正如你所说,两者都不起作用。在调试时我意识到UITableView
以某种方式丢失了选择并且没有为indexPathForSelectedRow
返回任何内容。
不幸的是我找不到一个很好的解决方案。我称之为iOS 7错误 UITableView的行为不像以前那样和预期的一样。
我使用的解决方案是更改UIView
的背景颜色,而不是使用UITableView
的选择方法,并将其更改为viewWillDisappear
中的默认颜色。
我很想看到更好的解决方案。