【问题标题】:How add button on NavigationBar dynamically (in runtime)? - Swift 2.0如何在 NavigationBar 上动态添加按钮(在运行时)? - 斯威夫特 2.0
【发布时间】:2016-02-10 03:34:25
【问题描述】:

我正在尝试动态添加导航栏,但发生了一些奇怪的事情。

我的屏幕只是一个 UINavigation 和一个带有红色背景的 View

这是我的 Swift 代码:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var navBar: UINavigationBar!

    @IBOutlet var viewLongPress: UIView!

    var viewLongPressInitialPosition: CGPoint!

    var frameSize: CGSize {
        get {
            return self.view.frame.size
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        navBar.frame.size.height = 64.0

        viewLongPress.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: "viewLongPressAction:"))

        viewLongPressInitialPosition = viewLongPress.frame.origin
    }

    func viewLongPressAction(sender: UILongPressGestureRecognizer) {

        let locationInView = sender.locationInView(self.view)

        if sender.state == .Began {

        } else if sender.state == .Changed {

            viewLongPress.frame.origin = CGPoint(x: locationInView.x - (viewLongPress.frame.width / 2), y: locationInView.y - (viewLongPress.frame.height / 2))

        } else if sender.state == .Ended {

            if locationInView.y <= navBar.frame.height {

                let item = UINavigationItem()
                item.rightBarButtonItems = [UIBarButtonItem(title: "Test", style: .Plain, target: nil, action: "noAction:")]

                navBar.items?.append(item)

            }

            viewLongPress.frame.origin = viewLongPressInitialPosition
        }
    }

    func noAction(sender: AnyObject) {

    }
}

我正在尝试添加 UINavigationItem 以完成将视图拖到 导航栏 顶部。

但是当我添加按钮时,导航栏是这样的:

应该添加按钮,如下所示:

我想我错过了什么,但我无法解决。


我尝试添加第二个按钮(leftBar),但标题消失了。

如果你已经有一个按钮,我该如何再添加一个按钮?


有人可以帮我吗?

感谢您的回答。

【问题讨论】:

    标签: swift swift2 uinavigationbar uinavigationitem uibuttonbaritem


    【解决方案1】:

    您正在替换整个UINavigationItem,这可能不是您想要的。请改用self.navigationItem.rightBarButtonItem = ...。您甚至不必与实际的导航栏进行交互,只需与当前视图控制器的导航项(也包含其标题)进行交互。

    编辑:看起来您的 navBar 已经有一个导航项。如果你改为做这个作业会发生什么:self.navBar.items.first?.rightBarButtonItem = ...

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 2015-04-12
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多