kev*_*eon 16 cocoa-touch uitabbarcontroller ios uistoryboard swift
所以我有一个UITabBarController有三个按钮的故事板.其中两个通过标准视图关联segues打开与标签栏相关联的标准视图......第三个项目是问题.
我想在模态视图中打开一个存在于另一个故事板(由应用程序中的其他视图共享)的表单,并在关闭或提交时,返回到之前在选项卡式视图中处于活动状态的任何选项卡.
我已经看到了一些"选项",但它们似乎都不像我想做的那样.
有任何想法吗?
编辑:它是由我的原始问题编辑的mod,但我在Swift中写这个...不是Obj-C.
kev*_*eon 16
所以我有一个潜在的解决方案,使用空白视图控制器,shouldSelectViewController和UITabBarController委托.唯一的问题是,我对它的脆弱程度并不特别满意.
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
// This is a bit dangerous if we move where 'newController' is located in the tabs, this will break.
let newController = viewControllers![1] as! UIViewController
// Check if the view about to load is the second tab and if it is, load the modal form instead.
if viewController == newController {
let storyboard = UIStoryboard(name: "ModalController", bundle: nil)
let vc = storyboard.instantiateInitialViewController() as? UIViewController
presentViewController(vc!, animated: true, completion: nil)
return false
} else {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是如果有人出现并重新排列故事板中选项卡的顺序,这将会破坏.
另外,为了给@rmp一些功劳,另外一个选项是"如果你为tabBarController中的所有根视图控制器提供一个标题,你可以使用viewController.title来检查在shouldSelectViewController委托中点击了哪个标签.当然,您仍然冒着有人重命名视图标题属性的风险."