如果两个 UITableView 被添加为屏幕上的子视图,导航栏只会折叠一个 UITableView

Posted

技术标签:

【中文标题】如果两个 UITableView 被添加为屏幕上的子视图,导航栏只会折叠一个 UITableView【英文标题】:Navigation bar only collapses for one UITableView if two UITableViews are added as subviews on screen 【发布时间】:2018-04-21 09:16:38 【问题描述】:

我有以下情况:

我在视图上添加了两个表视图。两者都将所有约束设置为所有边缘(顶部、左侧、右侧、底部)。一个在开始时是隐藏的,另一个不是。我已将分段控件放在导航栏 titleView 中,点击分段控件项会触发一个 tableview 隐藏和另一个 tableview 显示。一切正常,但在 ios11 上,当出现大标题时,导航栏只想滚动和折叠层次结构中的第一个 tableview,并且当我将段更改为其他 tableview 导航栏折叠和显示时失去所有触摸(停留在同一个地方)。

有什么方法可以解决这个问题,或者这是一些 iOS 错误/限制吗?

感谢您的帮助:)

在这种情况下,联系人表格视图能够影响大标题导航栏的滚动和折叠,而调用表格视图则不会。如果我切换它们,呼叫会影响导航栏而联系人不会。

【问题讨论】:

【参考方案1】:

iOS 11 上的折叠功能仅适用于作为 ViewController 的第一个子视图的 UITableViews 和 UICollectionViews。您可以将顶部的 tableView 移动到层次结构的底部(使用insertSubview(view, at: 0))并隐藏(或删除)前一个,而不是隐藏/取消隐藏表格视图。

【讨论】:

以上是关于如果两个 UITableView 被添加为屏幕上的子视图,导航栏只会折叠一个 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

NSLayoutConstraint 用于 UITableView 上的视图

在 UITableView 上添加子视图

同步访问屏幕行上的两个数据表

在 iOS 上的一个 UITableView 中加载两个不同的 nib

Xcode - 向 UITableView 添加约束,使其适合所有屏幕尺寸

滚动上的 UITableView 不会调用 didSelectRowAtIndexPath