我在swift 4中实现了一个自定义的返回按钮,但该按钮不显示。我可以看到它在那一层,但它在后面,不能把它带到前面。下面是我在viewDidload中的代码:
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
collectionView?.translatesAutoresizingMaskIntoConstraints = false
collectionView?.contentInset = UIEdgeInsets(top: 8, left: 0, bottom: 58, right: 0)
collectionView?.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0)
collectionView?.alwaysBounceVertical = true
collectionView?.backgroundColor = UIColor(patternImage: UIImage(named: "chat-bg")!)
collectionView?.register(ChatMessageCell.self, forCellWithReuseIdentifier: cellId)
collectionView?.keyboardDismissMode = .interactive
let username = Auth.auth().currentUser?.displayName
let backbutton = UIButton(type: .custom)
backbutton.translatesAutoresizingMaskIntoConstraints = false
backbutton.setImage(UIImage(named: "back"), for: .normal) // Image can be downloaded from here below link
backbutton.setTitle(username, for: .normal)
backbutton.setTitleColor(backbutton.tintColor, for: .normal) // You can change the TitleColor
backbutton.addTarget(self, action: #selector(backAction), for: .touchUpInside)
self.navigationController?.navigationItem.backBarButtonItem = UIBarButtonItem(customView: backbutton)
self.navigationController?.navigationBar.addSubview(backbutton)
setupInputComponents()
setupKeyboardObservers()
}
字符串
此外,附上了布局的截图我错过了什么?感谢您的帮助.
4条答案
按热度按时间9fkzdhlc1#
请检查您的集合的顶部约束视图,它需要来自超级视图或安全区域而不是来自主视图的顶部。基本上,集合视图隐藏了导航栏。如果你能告诉我集合视图约束,这将有助于轻松解决你的问题。
cfh9epnr2#
添加此
字符串
或
型
ybzsozfc3#
我终于修好了。这个问题与我的这部分代码无关。它与另一个控制器相关,该控制器是一个CustomTabController并包含navigationBar。我不能用这个代码覆盖它。因此,我将navigationBar部分移到CustomBarController之外,解决了这个问题。这个答案是非常具体的我的项目,只是分享它,让读者知道,它是固定在一个不同的方式。
bvjveswy4#
我也遇到了同样的问题,在我的例子中,我通过将以下代码移动到
viewWillAppear
来修复它字符串
然后添加以下代码:
型