在界面构建器中,我有一个UITabBarController
,它被设置为初始视图控制器。从标签栏控制器,我已经链接了三个独立的ViewControllers;两个UIViewController
和一个UITableViewController
。我已在UINavigationController
内嵌入了所有这三个视图,因为每个视图最终都会转换为新视图。
问题:
我现在想要使用按钮将UIViewController
&{39}中的一个链接到UITableViewController
以转到表格视图。这样我就可以将信息(即func prepareForSegue()
)传递给表格视图。我想在底部维护标签栏控制器,但是我不希望能够通过UIViewController
从当前UITableViewController
返回到先前的UIBarButtonItem
观点的顶部;这就是底部标签栏的用途。
然而,每当我离开" Show"表视图(它实际上是表视图导航控制器的一个segue),表视图顶部和底部的导航栏消失。反正有没有阻止这种情况发生?
我也尝试过segue" Show"直接到表视图,在这种情况下标签栏是可见的,但它显示"返回"视图顶部的按钮可以返回发送UIViewController
。我对接受一个只隐藏后退按钮的解决方案犹豫不决,因为当我想要从表视图本身导航到详细视图时,我觉得我会遇到问题,因为我会绕过{{1 } {' s UITableViewController
。
任何解决方案都将不胜感激。我一直试图解决这个问题好几个小时,我正要把头伸进我的电脑屏幕。另外我想过在按钮点击上使用UINavigationController
转移到表格视图,然后使用tabBarController?.selectedIndex
传递信息,但这是不可能的,因为我要传递一个自定义对象,并且必须对每个自定义字段进行编码和解码。
答案 0 :(得分:2)
我使用segue来实现它,正如你所说,你仍然会使用UIViewController
的{{1}},这似乎有些混乱。所以我认为UINavigationController
可能是最好的方法,因为一旦你更改为selectedIndex
,你将进入正确的导航堆栈。
为什么不从UITableViewController
引用NSUserDefaults
本身,设置所需的值,然后使用UITableView
交换它,而不是使用UIViewController
。< / p>
因此,对于上面的方案,假设self.tabBarController.selectedIndex
是UITableViewContollrer
中的第三个视图,您将执行以下操作:
通过在其中设置一些预定义的UITabBarController
,将您想要的任何内容传递到UITabBarController
。例如,如果var
中有一个名为String
的{{1}},请在saveMe
中执行以下操作:
UITableViewController
使用:
切换到UIViewController
let navController = self.tabBarController?.viewControllers![2] as! UINavigationController
let tableViewController = navController.viewControllers.first as! JarListTableViewController
tableViewController.saveMe = "Saved string here"
唯一的问题是使用UITableViewController
不会执行过渡动画,但不确定是否需要此功能。 This link could help if you do.