Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止UIPopoverController(iOS7)中的UITableView分隔符颜色变黑?_Ios_Uitableview_Ios7_Uipopovercontroller - Fatal编程技术网

如何防止UIPopoverController(iOS7)中的UITableView分隔符颜色变黑?

如何防止UIPopoverController(iOS7)中的UITableView分隔符颜色变黑?,ios,uitableview,ios7,uipopovercontroller,Ios,Uitableview,Ios7,Uipopovercontroller,我的应用程序使用UITableViewController,它是UINavigationController的子级,UINavigationController是UIPopoverController的内容视图控制器。我正在自定义UITableViewController的UITableView的外观。它在iOS5和iOS6上运行得非常好,但在iOS7中有一个问题。单元格的分隔符设置为白色,并且表格视图最初以正确的分隔符颜色显示。但是,一旦我滚动表格视图并重新加载单元格(即调用cellForRo

我的应用程序使用UITableViewController,它是UINavigationController的子级,UINavigationController是UIPopoverController的内容视图控制器。我正在自定义UITableViewController的UITableView的外观。它在iOS5和iOS6上运行得非常好,但在iOS7中有一个问题。单元格的分隔符设置为白色,并且表格视图最初以正确的分隔符颜色显示。但是,一旦我滚动表格视图并重新加载单元格(即调用cellForRowAtIndexPath和willDisplayCell函数),新加载单元格的分隔符都是黑色的

我通过在UITableViewController的viewDidLoad函数中调用此函数来自定义分隔符颜色:

self.tableView.separatorColor = [UIColor whiteColor];
如果我在应用程序的其他地方使用完全相同的表视图(不是在UIPopoverController中),那么我就没有这个问题


据我所知,文档中没有任何内容表明iOS 7的工作方式与iOS 5或iOS 6不同。也许是iOS的错误?任何帮助都将不胜感激。

视图中设置此选项将显示

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
        self.tableView.separatorColor = [UIColor whiteColor];
    }
希望这有助于

两条建议:
1.根本不要使用
UITableViewController
。它提供的自动化行为只需几次调用即可轻松实现,而且它打破了良好的
OOP
实践。

2.关于分隔符,不显示分隔符,但在底部的每个单元格中添加一个宽度等于单元格宽度和高度1点的
UIView

此问题是一个iOS错误-iOS7.0.4不再出现此问题。我不知道确切的版本是固定的。因此,无需重新加载数据,也无需在视图中设置分隔色。在viewDidLoad中这样做就足够了。

iOS7.0.6中仍然存在此iOS错误。我有一张黑色背景和白色分隔线的桌子。分隔线在
UIPopover
的第一个视图中正确显示为白色,但在同一popover的第二个和后续显示中显示为黑色

在tableview上使用重载数据没有帮助

我能找到的唯一实用的解决方法是以下方法,这会导致重新绘制整个表:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
}
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
}
注释

1) 如果仅使用
视图将显示
代码,则分隔线在再次变黑之前会正确显示一瞬间。如果仅使用
viewdide出现
代码,则在弹出框显示后,分隔线变白之前会有明显的延迟。使用两者都可以为用户提供最无缝的视觉效果

2) 如果您的表有多个分区,那么您应该确保重新加载所有分区,因为用户可能在隐藏popover之前已滚动到另一个分区


PS-经过进一步测试,我发现即使这个解决方案也不完美。重新显示后,如果滚动表格,最初屏幕外的分隔符将再次恢复为黑色。因此,只有当表格没有足够的行超出popover的大小时,它才能正常工作。

您是打算删除表格分隔符还是表格变暗?顺便说一句,iOS7中有很多这样的小故障。表视图单元格是彩色的,所以白色时可以看到分隔符。所以我不想删除它们。我发现iPad上的popover中的表视图也存在类似的问题。原因似乎是因为在表视图出现之前重新加载了它-如果我不这样做,而是在它被添加到屏幕后重新加载,它的工作会稍微好一点。自从我遇到这个问题以来,我一直无法找到任何解决方案,而且它看起来肯定像一个iOS7 UIKit错误。我已经向苹果公司提出了这个问题,但还没有得到任何回复。有同样的问题。尝试在ViewController的ViewWillAspect方法()中调用setSeparatorColor(),在这里,setSeparatorColor()在第二次和第n次调用时无效。只有第一个。看起来真像只虫子。感谢您向苹果公司提交文件。Vern Jensen的评论中提到了确切的解决方案。这似乎并不适用于所有人。