如何在 NavigationBar 上动态添加按钮(在运行时)? - Swift 2.0
How add button on NavigationBar dynamically (in runtime)? - Swift 2.0
我正在尝试动态添加导航栏,但出现了一些奇怪的情况。
我的屏幕只是一个 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),但标题消失了。
如果您已经有一个按钮,我该如何再添加一个按钮?
有人可以帮助我吗?
感谢您的回答。
您正在更换整个 UINavigationItem
,这可能不是您想要的。请尝试 self.navigationItem.rightBarButtonItem = ...
。您甚至不必与实际的导航栏交互,只需与当前视图控制器的导航项(还包含其标题)交互即可。
编辑:看起来您的导航栏已经有一个导航项。如果改为执行此作业会发生什么情况:self.navBar.items.first?.rightBarButtonItem = ...
我正在尝试动态添加导航栏,但出现了一些奇怪的情况。
我的屏幕只是一个 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),但标题消失了。
如果您已经有一个按钮,我该如何再添加一个按钮?
有人可以帮助我吗?
感谢您的回答。
您正在更换整个 UINavigationItem
,这可能不是您想要的。请尝试 self.navigationItem.rightBarButtonItem = ...
。您甚至不必与实际的导航栏交互,只需与当前视图控制器的导航项(还包含其标题)交互即可。
编辑:看起来您的导航栏已经有一个导航项。如果改为执行此作业会发生什么情况:self.navBar.items.first?.rightBarButtonItem = ...