如何在标签栏视图控制器中显示后退按钮?
Posted
技术标签:
【中文标题】如何在标签栏视图控制器中显示后退按钮?【英文标题】:How to show back button in a tab bar viewcontroller? 【发布时间】:2017-08-04 09:38:35 【问题描述】:我有一个导航控制器,其根目录上有一个主视图控制器。然后我推一个标签栏视图控制器。后退按钮消失。如何通过后退按钮从标签栏视图控制器返回到主视图控制器?我怎样才能让它再次可见?
我试过了:
let navItem = self.navigationController?.navigationItem
let navItem2 = self.navigationItem;
leftBarButton = UIBarButtonItem()
leftBarButton.image = UIImage(named: "arrows-back-icon-24.png")
leftBarButton.action = #selector(self.popViewController);
leftBarButton.target = self
navItem?.leftBarButtonItem = leftBarButton
navItem2.leftBarButtonItem = leftBarButton;
我也试过了:
let navItem = self.navigationController?.navigationItem
let navItem2 = self.navigationItem;
navItem?.leftBarButtonItem = nil;
navItem2.leftBarButtonItem = nil;
一切都不起作用。请帮忙。谢谢。
【问题讨论】:
你需要将tabBarViewController
设为rootViewController
你的流程是这样的吗? UINavigationController -> UIViewController (你的家庭 vc) -> UITabBarController.
尝试更改为 leftBarButton.action = #selector(self.navigationController?.popViewController)。但首先您需要确认工作流程 UINavigationController -> UIViewController(Home) -> UITabBarController
@JD。是的,这就是我的流程。
@wskcoder 流程是这样的,但问题是按钮根本没有显示。不是无效的操作。
【参考方案1】:
试试这个:将 UITabBarController 类文件分配给标签栏控制器,就像视图控制器一样。
import UIKit
//this is TabBarController.swift file
class TabBarController: UITabBarController
override func viewDidLoad()
super.viewDidLoad()
然后像这样从 HomeVC 推送它(这里,我使用 UIButton 进行推送):
@IBAction func btnPush(_ sender: UIButton)
let vc = self.storyboard?.instantiateViewController(withIdentifier: "TabBarController") as! TabBarController
self.navigationController?.pushViewController(vc, animated: true)
【讨论】:
【参考方案2】:我遇到了同样的问题,但就我而言,这是由于 viewWillAppear 方法造成的。尝试将以下内容添加到嵌入在相应 UITabBarController 中的每个 UIViewController:
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(true)
self.navigationController?.setNavigationBarHidden(false, animated: true)
希望这对你有用。
【讨论】:
【参考方案3】:let btn1 = UIButton(type: .custom)
btn1.setImage(UIImage(named: "image"), for: .normal)
btn1.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
btn1.addTarget(self, action: #selector(methodname), for: .touchUpInside)
let item1 = UIBarButtonItem(customView: btn1)
let btn2 = UIButton(type: .custom)
btn2.setImage(UIImage(named: "image"), for: .normal)
btn2.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
btn2.addTarget(self, action: #selector(methodName), for: .touchUpInside)
let item2 = UIBarButtonItem(customView: btn2)
self.navigationItem.setLeftBarButtonItems([item1,item2], animated: true)
试试这个
【讨论】:
问题不在于按钮的内容。问题是,无论我为标签栏上的左栏按钮项设置什么,它都是空的。以上是关于如何在标签栏视图控制器中显示后退按钮?的主要内容,如果未能解决你的问题,请参考以下文章