我的项目中有很多页面,所以我使用了多个Storyboaord。登录页面后,我想转到一个有五个页面的标签栏控制器。因此,我的标签栏控制器位于其自己的故事板中。故事板的名称为HomePage,选项卡栏标识符为HomePageVC。因此,我用来从登录页面(登录后)调用的代码是:
let storyboard = UIStoryboard(name: "HomePage", bundle: nil)
let secondVC = storyboard.instantiateViewController(identifier: "HomePageVC")
self.navigationController?.pushViewController(secondVC, animated: true)
然后以这种方式设置主页情节提要[![在此处输入图片描述] [1]] [1]
五个选项卡中的每个选项卡均导致在不同的故事板中使用不同的视图控制器(为此,我使用了故事板参考)。现在我遇到三个问题:
当我使用此方法显示标签栏和下一个视图控制器时,有两个导航控制器。因此,基本上是连接到导航栏控制器的视图控制器(并且导航栏控制器被设置为初始视图控制器)。问题是先前的视图控制器导航栏被推到了下一个视图控制器导航栏。导致双Mac吧。我想删除顶部的导航栏,并保留以下导航栏的文本。
我遇到的第二个问题是标签栏实际上没有正确显示,它只是一个灰色栏。但是,我认为按钮仍然存在,因为当我单击选项卡栏上应有按钮的部分时,它会转到该视图控制器。
最后一个问题是我为标签栏按钮放入的图像太大。如何将它们调整为合适的尺寸。我不确定这是否是导致第二个问题的原因,但可能是。那么我该如何解决这些问题。
未来注意事项:您一次只能问一个问题。
对于问题1-双导航栏。
在登录视图控制器中,您可以执行以下操作:
class LogInViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// show the navigation bar
self.navigationController?.setNavigationBarHidden(false, animated: false)
}
@IBAction func loginTapped(_ sender: Any) {
// hide the navigation bar
self.navigationController?.setNavigationBarHidden(true, animated: false)
let storyboard = UIStoryboard(name: "HomePage", bundle: nil)
let secondVC = storyboard.instantiateViewController(identifier: "HomePageVC")
self.navigationController?.pushViewController(secondVC, animated: true)
}
}
问题2-标签栏图标未显示。
在导航控制器中嵌入选项卡栏控制器通常被认为是不好的做法,因为导航可能会使用户感到困惑。但是,我不是Apple,如果它适合您的设计并且导航仍然直观...
我只是尝试了一下,没有,标签栏按钮图标(和标题)没有显示。不完全确定为什么...但是这是一种方法。
首先,删除所有当前的标签栏控制器连接。因此,您的“主页”情节提要板将仅具有一个标签栏控制器(情节提要ID为“ HomePageVC”)。
接下来,将一个UITabBarController
子类添加到您的项目中,并将其分配给“ HomePageVC”选项卡栏控制器。它看起来像这样:
class MyTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
var sb = UIStoryboard(name: "Settings", bundle: nil)
guard let tab1VC = sb.instantiateInitialViewController() else {
fatalError("Could not load Settings VC!")
}
guard let tab1Icon = UIImage(named: "settignsTabIcon") else {
fatalError("Could not load settignsTabIcon image!")
}
tab1VC.tabBarItem = UITabBarItem(title: "Settings", image: tab1Icon, selectedImage: tab1Icon)
sb = UIStoryboard(name: "Communication", bundle: nil)
guard let tab2VC = sb.instantiateInitialViewController() else {
fatalError("Could not load Communication VC!")
}
guard let tab2Icon = UIImage(named: "communicationTabIcon") else {
fatalError("Could not load communicationTabIcon image!")
}
tab2VC.tabBarItem = UITabBarItem(title: "Comunication", image: tab2Icon, selectedImage: tab2Icon)
// etc for your other 3 tabs
let viewControllerList = [ tab1VC, tab2VC ]
viewControllers = viewControllerList
}
}
关于问题3-标签图标的大小...您可能可以通过简单的搜索找到它...如果不能,请回来并作为新帖子提出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句