- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个主要的tabBarController
并想呈现一个 viewController
modally
当某个tabBarItem
已被点击。
我正在加载 viewControllers
在我的tabBarController
作为...
func setupViewControllers() {
self.tabBar.isHidden = false
if let firstVC = storyboard?.instantiateViewController(withIdentifier: "first") as? FirstViewController, let secondVC = storyboard?.instantiateViewController(withIdentifier: "second") as? SecondViewController, let thirdVC = storyboard?.instantiateViewController(withIdentifier: "third") as? ThirdViewController, let fourthVC = storyboard?.instantiateViewController(withIdentifier: "fourth") as? FourthViewController, let fifthVC = storyboard?.instantiateViewController(withIdentifier: "fifth") as? FifthViewController {
let firstNavController = UINavigationController(rootViewController: firstVC)
let secondNavController = UINavigationController(rootViewController: secondVC)
let fourthNavController = UINavigationController(rootViewController: fourthVC)
let fifthNavController = UINavigationController(rootViewController: fifthVC)
firstNavController.tabBarItem.image = image
secondNavController.tabBarItem.image = image
fourthNavController.tabBarItem.image = image
fifthNavController.tabBarItem.image = image
thirdVC.tabBarItem.image = image
tabBar.tintColor = nil
//Load tabBar viewControllers
viewControllers = [homeNavController, postNavController, plusMenuVC, meetupNavController, profileNavController]
}
}
然后我遵守了tabBarViewController
到UITabBarControllerDelegate
调用该方法...
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if tabBarController.selectedIndex == 2, let thirdVC = viewController as? ThirdViewController {
thirdVC.modalPresentationStyle = .overFullScreen
thirdVC.modalTransitionStyle = .crossDissolve
present(thirdVC, animated: true, completion: nil)
return false
} else { return true }
}
但是上面的内容永远不会被触发。我尝试设置 viewDidLoad
self.delegate = self
我尝试设置根导航 Controller 及其祖先 tabBarController
委托(delegate)给自己。
似乎没有任何效果,我希望有人可以指导我,因为我无法调试并找到现有的解决方案......
更新所以我创建了一个dummyThirdVC
替换 thirdVC
在 setupViewControllers()
功能。在 dummyThirdVC
,我符合UITabBarControllerDelegate
并在 viewDidLoad
我设置了self.tabBarController.delegate = self
。然后我拿了delegate
方法并将其输入到此dummyThirdVC
中,在这里面 delegate
方法,我实例化了真实的thirdVC
呈现。
delegate
方法最终正确触发,但我现在的问题是 dummyThirdVC
它的 View 必须首先加载并显示 delegate
此后将被设置并触发。
我怎么才能不显示dummyThirdVC
并立即呈现实例化的真实thirdVC
?我试过dummyThirdVC.viewDidLoad()
在我的setupViewControllers
功能无济于事...
最佳答案
我相信你的支票是错误的。您正在检查 selectedIndex
是否为 2,但 selectedIndex
的值将始终是实际选项卡栏的选定索引,而不是要选择的索引,所以你基本上永远不会达到 selectedIndex
为 2。
您也无法呈现已处于事件状态的 View Controller ,并且 thirdVC
已在您的 tabBar 中处于事件状态,因此您将收到错误。解决此问题的一种方法是使用 viewController 作为选项卡栏中图像和标题的占位符,并实例化另一个用于呈现。
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController is ThirdViewController {
let vcToPresent = storyboard?.instantiateViewController(withIdentifier: "third") as? ThirdViewController
vcToPresent.modalPresentationStyle = .overFullScreen
vcToPresent.modalTransitionStyle = .crossDissolve
present(vcToPresent, animated: true, completion: nil)
return false
}
return true
}
关于ios - 通过 TabBarController 呈现模态视图 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59886645/
我是 IOS/objective-c/xcode 的新手,请多多包涵。我的问题是我不知道如何在标签栏中设置标签栏。 首先:我成功创建了一个 UITabBarController 和他的 View :
我正在开发一个项目,当我们选择某些内容时,Initial View 有一个 PickerView。我将此数据作为 String 传递给 TabBarController,然后从 TabBarContr
我想知道如何在 Xcode 中创建嵌套的 UITabBarControllers,我正在使用 Swift。 我的第一个 UITabBarController 有两个项目:Search (UITable
我正在呈现来自另一个 ViewController (HomeViewController) 的 UITabBarController。 TabBarController 又包含 UINavigati
已编辑 有人可以解释[self.tabBarController setSelectedIndex:1];和self.tabBarController.selectedIndex = 1;之间的区别
在多个 Storyboard中工作。从点 A->TabBarController(tab 2)->NavigationControllerA->StoryboardReference->Navigat
我有一个自定义的 UITabBarController。我正在记录与它一起使用的 4 个 ViewController,我得到了我期望的结果。 但是,当我点击 NavigationController
我想以编程方式制作tabbarcontroller。 tabBarController 未显示在页面中。谁能告诉我们出了什么问题吗?我们可以在一个应用程序中制作多个 tabbarcontroller
我是 iPhone 开发者的初学者,我正在开发我的第一个应用程序。实际上,我已经很好地创建了一个 Tab Bar 应用程序,但我想在运行应用程序时添加启动画面。 我在 Loading a Welcom
我似乎还没有对 UITabBar、UITabBarController 和导航 Controller 有足够的了解来做我想做的事情。我希望有人可以提供一些指导。 我总共有 8 个 VC。我希望其中五个
在我的应用程序的设置部分,用户可以选择更改应用程序的语言。所以当用户选择西类牙语 作为他的主要语言,该应用程序以西类牙语显示内容在他重启应用后但我想更改语言在飞行中 .这适用于主要内容,如 Table
我创建了一个选项卡栏 Controller ,我注意到当我更改选项卡时,它会发生突然的变化场景。有没有办法让它在选项卡更改时滑动到该选项卡? 最佳答案 我认为 UITabBarController 不
我的应用程序是基于选项卡的应用程序,它有 8 个选项卡。所以它有“更多”按钮 用户可以在其中重新排序选项卡。 但是在某些 ViewController 中,当用户单击按钮时,我需要转到另一个选项卡。我
我创建了一个带有 4 个 UIViewController 的 TabBarController。但是,当我想在 TabBarController 中显示 ViewController 之一时: fu
所以我是一名初级开发人员。并且只是想拥有一个 UITabBarController。我启动了一个新的基于 View 的应用程序。遵循 iPhone 开发初学者(第 7 章)中 Mark、Nutting
我正在开发一个 iphone 应用程序,其中前四个屏幕是基于导航的。 从第五个屏幕开始,设计更改为基于 Tabbar 的.在这个基于标签栏的部分中,我们能够导航每个标签上的 subview 。 我如何
我在我的应用程序中使用了标签栏 Controller 。在应用程序的大部分行为中,我们只有一个方向 (interfaceOrientationPortrait)。但我有一个在 WebView 中运行视
我一直在试图找出为什么 TabBarController 总是可见的。我一直在尝试实现每次更改 View Controller 时都不会重新加载的 iAd。通过将 iAd 附加到 TabBar,我能够
在我的模态视图 Controller 中,您可以在两个选项之间进行选择,然后每个选项都显示一个 tabBar 等等。我的模态视图显然会自动旋转,但 tabBar 不会,即使我为项目中的每个 UIVie
我已经以编程方式创建了一个带有 View 等的TabBarController。现在我想在按下按钮时显示这个TabBarController。我怎么做?目前我以模态方式呈现它,但它不起作用 - 抛出
我是一名优秀的程序员,十分优秀!