如何从嵌入在选项卡栏控制器中的 UIButton 推送 ViewController
How to push a ViewController from a UIButton that is embedded in Tab Bar Controller
想要在我的标签栏旁边有一个浮动按钮。按下时,此按钮将打开一个可以导航的视图(因此视图控制器嵌入在导航控制器中(?))。
在 UITabBarController {
ViewDidLoad() {
super.viewDidLoad()
//I have my 5 tab bar items set up programatically here.
//The middle tab bar item is disabled because the button is on top of it
setupMiddleButton()
}
我的 setupMiddleButton 函数
let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 52, height: 52))
//..various styling and alignment values...
view.addSubview(menuButton)
menuButton.addTarget(self, action: #selector(menuButtonAction(sender:)), for: .touchUpInside)
最后我尝试添加代码来推送视图控制器,但是当点击按钮时我收到 nil。
@objc private func menuButtonAction(sender: UIButton) {
let createController = CreateViewController()
let nav3 = UINavigationController(rootViewController: createController)
nav3.navigationController!.pushViewController(createController, animated: true)
我认为您可能向 menuButtonAction
函数传递了错误的参数,请尝试像这样更改您的代码:
func setupMiddleButton() {
let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 52, height: 52))
//..various styling and alignment values...
view.addSubview(menuButton)
menuButton.addTarget(self, action: #selector(menuButtonAction(_:)), for: .touchUpInside)
}
...
@objc private func menuButtonAction(_ sender: UIButton) {
...
}
所以我想通了。事实证明它比我想象的要简单得多,这让我觉得我在这个问题上解释得不好。无论如何,这是对我有用的代码。
let myViewController = ViewController()
let nav = UINavigationController(rootViewController: myViewController)
self.present(nav, animated:true, completion: nil)
想要在我的标签栏旁边有一个浮动按钮。按下时,此按钮将打开一个可以导航的视图(因此视图控制器嵌入在导航控制器中(?))。
在 UITabBarController {
ViewDidLoad() {
super.viewDidLoad()
//I have my 5 tab bar items set up programatically here.
//The middle tab bar item is disabled because the button is on top of it
setupMiddleButton()
}
我的 setupMiddleButton 函数
let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 52, height: 52))
//..various styling and alignment values...
view.addSubview(menuButton)
menuButton.addTarget(self, action: #selector(menuButtonAction(sender:)), for: .touchUpInside)
最后我尝试添加代码来推送视图控制器,但是当点击按钮时我收到 nil。
@objc private func menuButtonAction(sender: UIButton) {
let createController = CreateViewController()
let nav3 = UINavigationController(rootViewController: createController)
nav3.navigationController!.pushViewController(createController, animated: true)
我认为您可能向 menuButtonAction
函数传递了错误的参数,请尝试像这样更改您的代码:
func setupMiddleButton() {
let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 52, height: 52))
//..various styling and alignment values...
view.addSubview(menuButton)
menuButton.addTarget(self, action: #selector(menuButtonAction(_:)), for: .touchUpInside)
}
...
@objc private func menuButtonAction(_ sender: UIButton) {
...
}
所以我想通了。事实证明它比我想象的要简单得多,这让我觉得我在这个问题上解释得不好。无论如何,这是对我有用的代码。
let myViewController = ViewController()
let nav = UINavigationController(rootViewController: myViewController)
self.present(nav, animated:true, completion: nil)