ios - 无法在 Swift4 的 UINavigationBar 上推送 UINavigationItem

标签 ios swift uinavigationbar

我们使用代码创建 navigationBar 并为该 navigationBar 设置 navigationItem。

但是,按 navigationItem 没有反应。

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.white

    let navBar: UINavigationBar = {
        let navBar = UINavigationBar()
        navBar.frame = CGRect(x: 0, y: 44, width: view.frame.width, height: navBar.frame.height)
        navBar.barTintColor = UIColor.white
        let navItem = UINavigationItem()
        let saveButton = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(saveBook))
        navItem.rightBarButtonItem = saveButton
        let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancel))
        navItem.leftBarButtonItem = cancelButton
        navItem.rightBarButtonItem?.isEnabled = true
        navItem.leftBarButtonItem?.isEnabled = true
        navItem.title = "書籍追加"
        navBar.pushItem(navItem, animated: true)
        return navBar
    }()
    view.addSubview(navBar)

最佳答案

显然这段代码不正确,因为框架仍然是 CGRect.zero。所以你将高度设置为 0。你没有得到你想要的。

不在这里:

  navBar.frame = CGRect(x: 0, y: 44, width: view.frame.width, height: navBar.frame.height)

如果你添加代码,你就会明白我的意思,因为你看不到导航栏?:

    navBar.clipsToBounds = true
    view.addSubview(navBar)

你可以试试:

  navBar.frame = CGRect(x: 0, y: 44, width: view.frame.width, height: 44)

关于ios - 无法在 Swift4 的 UINavigationBar 上推送 UINavigationItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139266/

相关文章:

ios - UIScrollView 覆盖 NavigationBar

ios - UINavigationbar 会在 UISearchbar 结束搜索后显示,如何隐藏导航栏

ios - 从 NSUserDefaults 解码自定义对象数组时出错?

iphone - UITableView 刷新崩溃

ios - 在表格 View 单元格内设置 Collection View 约束的正确方法

ios - 从 swift2 IOS 到 PHP 的 POST 连接

swift - 检索像素数据不能正确使用 UIGraphicsImageRenderer 图像

ios - 将图像转换为 SceneKit 节点

ios - Swift 3 HTTPS GET 请求

ios - Navigation Bar 向上移动,同时 Navigation Controller 弹出动画