有人可以告诉我如何在导航栏中显示3个按钮,它会显示在所有屏幕或视图控制器中吗?我想在单个类中创建它并在所有视图控制器中调用该类。我不知道如何使用它。
答案 0 :(得分:1)
您可以添加将被视为全局视图的容器视图。
答案 1 :(得分:1)
以下是您可以使用的方法
NavButton类:
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")
}
}
答案 2 :(得分:0)
创建一个名为BaseVC的类。这将是您的BaseViewController类。自定义它并以编程方式在其导航栏中添加3个按钮。
现在,在每个其他视图控制器中扩展此类,然后就完成了。