如果两个 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 上的视图
在 iOS 上的一个 UITableView 中加载两个不同的 nib