如何在导航栏中添加 3 个按钮并将这些按钮转发到其他屏幕或视图控制器?
How can i add 3 buttons in the navigation bar and those buttons forward to other screens or view controllers?
有人可以告诉我如何在导航栏中显示 3 个按钮并在所有屏幕或视图控制器中显示吗?我想在单个 class 中进行此操作,并在所有视图控制器中调用 class。我不知道怎么用这个。
创建一个名为 BaseVC 的 Class。这将是您的 BaseViewController class。自定义它并以编程方式将 3 个按钮添加到其导航栏。
现在,在每个其他视图控制器中扩展这个 class,瞧,你已经完成了。
您可以添加将被视为全局视图的容器视图。
这是您可以使用的方法
导航按钮class:
import Foundation
import UIKit
protocol navProtocol : class {
func button1()
func button2()
func button3()
}
class navButtons
{
var navBtn1 = UIBarButtonItem()
var navBtn2 = UIBarButtonItem()
var navBtn3 = UIBarButtonItem()
var navProtocolObj : navProtocol?
static var shared = navButtons()
func createButtonView() -> (UIBarButtonItem,UIBarButtonItem,UIBarButtonItem)
{
navBtn1 = UIBarButtonItem(title: "btn1", style: UIBarButtonItemStyle.plain, target: self, action: #selector(navButtons.button1Action(sender:)))
navBtn2 = UIBarButtonItem(title: "btn2", style: UIBarButtonItemStyle.plain, target: self, action: #selector(navButtons.button2Action(sender:)))
navBtn3 = UIBarButtonItem(title: "btn3", style: UIBarButtonItemStyle.plain, target: self, action: #selector(navButtons.button3Action(sender:)))
return (navBtn1,navBtn2,navBtn3)
}
@objc func button1Action(sender:UIBarButtonItem){
navProtocolObj?.button1()
}
@objc func button2Action(sender:UIBarButtonItem){
navProtocolObj?.button2()
}
@objc func button3Action(sender:UIBarButtonItem){
navProtocolObj?.button3()
}
}
在您希望执行所有这些操作的目标中
import UIKit
class SourceVC: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
let buttonAdded = navButtons.shared.createButtonView()
navButtons.shared.navProtocolObj = self
self.navigationItem.rightBarButtonItems = [buttonAdded.0,buttonAdded.1,buttonAdded.2]
}
}
extension SourceVC : navProtocol {
@objc func button1() {
print("Button 1 Tapped")
}
func button2() {
print("Button 2 Tapped")
}
func button3() {
print("Button 3 Tapped")
}
}
上面的模拟器输出:
上面的控制台输出:
有人可以告诉我如何在导航栏中显示 3 个按钮并在所有屏幕或视图控制器中显示吗?我想在单个 class 中进行此操作,并在所有视图控制器中调用 class。我不知道怎么用这个。
创建一个名为 BaseVC 的 Class。这将是您的 BaseViewController class。自定义它并以编程方式将 3 个按钮添加到其导航栏。
现在,在每个其他视图控制器中扩展这个 class,瞧,你已经完成了。
您可以添加将被视为全局视图的容器视图。
这是您可以使用的方法
导航按钮class:
import Foundation
import UIKit
protocol navProtocol : class {
func button1()
func button2()
func button3()
}
class navButtons
{
var navBtn1 = UIBarButtonItem()
var navBtn2 = UIBarButtonItem()
var navBtn3 = UIBarButtonItem()
var navProtocolObj : navProtocol?
static var shared = navButtons()
func createButtonView() -> (UIBarButtonItem,UIBarButtonItem,UIBarButtonItem)
{
navBtn1 = UIBarButtonItem(title: "btn1", style: UIBarButtonItemStyle.plain, target: self, action: #selector(navButtons.button1Action(sender:)))
navBtn2 = UIBarButtonItem(title: "btn2", style: UIBarButtonItemStyle.plain, target: self, action: #selector(navButtons.button2Action(sender:)))
navBtn3 = UIBarButtonItem(title: "btn3", style: UIBarButtonItemStyle.plain, target: self, action: #selector(navButtons.button3Action(sender:)))
return (navBtn1,navBtn2,navBtn3)
}
@objc func button1Action(sender:UIBarButtonItem){
navProtocolObj?.button1()
}
@objc func button2Action(sender:UIBarButtonItem){
navProtocolObj?.button2()
}
@objc func button3Action(sender:UIBarButtonItem){
navProtocolObj?.button3()
}
}
在您希望执行所有这些操作的目标中
import UIKit
class SourceVC: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
let buttonAdded = navButtons.shared.createButtonView()
navButtons.shared.navProtocolObj = self
self.navigationItem.rightBarButtonItems = [buttonAdded.0,buttonAdded.1,buttonAdded.2]
}
}
extension SourceVC : navProtocol {
@objc func button1() {
print("Button 1 Tapped")
}
func button2() {
print("Button 2 Tapped")
}
func button3() {
print("Button 3 Tapped")
}
}
上面的模拟器输出:
上面的控制台输出: