我使用按钮作为UITableViewController
的标题视图,打开了类别的下拉列表。选择类别会按所选类别过滤表格视图的内容。
按钮显示所选类别的名称加上一个小箭头,类似于iBooks的外观(或者看起来仍然看起来?我暂时没有使用它)。因此,我希望它具有与标准标题相同的行为,并且首先使其变大,并在滚动表视图时折叠。
有办法做到这一点吗?
由于
答案 0 :(得分:6)
似乎由于新的大型游戏,IOS11需要在navigationItem.titleView中设置自定义视图的约束。
这样做:
customView.widthAnchor.constraint(equalToConstant: 200).isActive = true
customView.heightAnchor.constraint(equalToConstant: 44).isActive = true
self.navigationItem.titleView = customView
请注意,必须同时对宽度和高度进行此操作。
它应该工作。不需要添加按钮,至少在我的情况下......
这是Apple建议的,以确保您没有零大小的自定义视图。请参阅https://developer.apple.com/videos/play/wwdc2017/204/
中的幻灯片33答案 1 :(得分:4)
看起来navItem.titleView的触摸被破坏了。手势,点击事件和按钮 - 没有任何作用
答案 2 :(得分:2)
似乎是iOS 11中的错误:https://forums.developer.apple.com/thread/82466
我暂时实施了此解决方法:
private lazy var navBarActionButtonIOS11: UIButton = {
button.addTarget(self.navTitleView, action: #selector(self.navTitleView.didTapView), for: .touchUpInside)
return button
}()
[...]
navigationItem.titleView = navTitleView
if #available(iOS 11.0, *), let navBar = navigationController?.navigationBar {
navBarActionButtonIOS11.removeFromSuperview()
navBar.addSubview(navBarActionButtonIOS11)
navBarActionButtonIOS11.center.x = navBar.center.x
}
另一个解决方案是直接将UIButton分配给navigationItem.titleView。
我希望Apple尽快解决这个问题!
答案 3 :(得分:1)
嗯,我有同样的问题。我在UINavigationItem.titleView中有UIButtons,而那些根本没有对触摸作出反应。问题是由于自动布局,这些按钮在哪里的大小(0,0)。因此,要解决此问题,您需要在自定义视图中添加其他视图,我们将其称为“contentView”并将所有控件放在该contentView中。此外,contentView必须具有约束的已定义大小。快速测试是为contentView添加宽度和高度约束。一切都有效。
希望这有助于某人。