【问题标题】:UITableView separator between first cell and title overlays UISearchBar第一个单元格和标题覆盖 UISearchBar 之间的 UITableView 分隔符
【发布时间】:2012-12-01 18:13:17
【问题描述】:

我在表格视图的顶部添加了一个动态滚动的 UISearchBar。为此,我将 UISearchBar 添加为 tableview 的子视图,然后实现了一个 scrollviewdelegate 方法,以便搜索栏始终固定在顶部。我还相应地设置了 tableView 的 contentInset,以便最上面的单元格偏移到足以用于搜索栏。

我遇到的唯一问题是在表格视图的第一个单元格上方绘制的默认分隔符。当从顶部开始向下滚动时,分隔符实际上绘制在搜索栏上方,而不是下方。这会产生一个我想修复的可怕的用户界面错误。请注意,这只发生在第一个单元格上;单元格之间的每个其他分隔符都会在搜索栏下滚动,这是应该的,并且没有相同的 UI 错误。有什么想法吗?

【问题讨论】:

    标签: objective-c ios uitableview


    【解决方案1】:

    你确定 UISearchBar 是最前面的吗?尝试在您的viewDidLoad 中将其一直放在代码的最前面。如果这不能解决故障,请考虑为您的界面提供替代解决方案。这里有一些 - 尝试其中任何一个:

    • 使 UISearchBar 成为 UITableView 的标题(不是一个部分;表视图本身)。这是非常标准的界面。

    • 如果您使用的是 iOS 6,而不是滚动视图委托技巧(这在 iOS 6 之前是相当标准的,做得很好),使用约束将搜索栏固定到视图层次结构比表视图。 (因为您在导航控制器中,所以在您的情况下,这将是导航控制器的视图。)这是防止滚动视图子视图随内容滚动的新 iOS 6 方法。我不知道这是否能解决问题,但值得一试。

    • 不要使用默认分隔符。绘制自己的分隔符作为单元格背景图像的一部分并不难。

    【讨论】:

    • - 如您所说,将 UISearchBar 设置为标题不会让我自动滚动。但是对于默认分隔符,问题在于单元格分隔符实际上并未绘制在顶部和底部。如果我设置 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone,我仍然会在 tableview 的顶部和底部获得分隔符,而不是在单元格之间的中间。我不确定如何禁用顶部和底部分隔符。
    • “将 UISearchBar 设置为标题不会让我自动滚动” - 抱歉,这是什么意思?您可以在代码中滚动到 UISearchBar 标头。这是一个很好的界面,因为它节省了空间。
    • 我的意思是,正如您所说,我希望搜索栏始终保持在屏幕上。无论如何以编程方式禁用在部分顶部和底部自动绘制的分隔符(不是单元格之间的分隔符)
    • 问题是我从未见过你遇到的问题。在这里看看我的可下载示例:github.com/mattneub/Programming-iOS-Book-Examples/tree/master/… 它有一个和你一样的界面(导航控制器,固定搜索栏),但没有故障。也许你应该尝试按照我在那里的方式进行操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2011-05-17
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多