UISplitViewController:在 detailView 中导航
Posted
技术标签:
【中文标题】UISplitViewController:在 detailView 中导航【英文标题】:UISplitViewController: Navigating within detailView 【发布时间】:2015-11-21 16:27:18 【问题描述】:我有一个带有 SplitView 的应用程序,可让您将公司添加到数据库中。 在 masterView 中,公司显示有各自的公司名称。 点击其中一家公司会向我显示“viewCell”中的地址(实际上不是一个单元格,只是 viewController 中的一个视图,只是更容易解释)。 在“viewCell”下面是一个 tableView(仍然在同一个 viewController 中),有一行:“Employees”。点击它会引导我进入一个新的 tableViewController,其中列出了我可以添加或添加的所有员工。
我想使用 navBarItem 在 CompanyDetailViewController 和 EmployeesTableViewController 之间来回切换。
在 iPhone 上,这与自动创建的“EmployeeTableViewController“认为”它是 masterView 的 detailView,因此不需要它),但我希望能够通过动画转换回来并值得。
我的prepareForSegue
从CompanyDetailView
到EmployeesTableViewController
看起来像这样:
if (segue.identifier == "ShowEmployeesSegue")
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! EmployeesTableViewController
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
controller.coreDataStack = coreDataStack
controller.companyToView = companyToView as? Company
更新:部分截图
iPhone:http://i.stack.imgur.com/ivl86.png
MasterView 与 3 家测试公司
测试公司 1 的详细视图
点击员工后测试公司 1 的员工列表,“
iPad:http://i.stack.imgur.com/ObBto.png
MasterView 和 Test Company 1 的 DetailView
测试公司 1 的员工列表,没有“
【问题讨论】:
问题有点不清楚。你能显示几个屏幕,比如你想实现什么? 【参考方案1】:根据一些理解,以下可能是您的解决方案。
检查代码,如果它的操作是 showDetailViewController:sender。
打开选择 Storyboard -> Open as Source Code。 找到你的对象(可能是 x 和 y)。
工作连接segue应该如下所示
<connections>
<segue destination="UXJ-Si-1aa" kind="show" id="aDD-wp-6dZ"/>
</connections>
如果有可能,请删除该操作,然后按以下方式重试。
选择按钮,cntrl
+ 将指针拖动到您的 ViewController。显示在图片中
如果你有像下面这样的 一个不工作,并且 不会显示 UINavigationBar
<connections>
<segue destination="UXJ-Si-1aa" kind="show" action="showDetailViewController:sender:" id="A8L-Ad-PKT"/>
</connections>
【讨论】:
感谢您的评论。我尝试了您的建议(即使我不知道它应该改变什么 :P ),但无济于事。 你能在没有显示返回按钮的控制器中打印 self.navigationController 吗?Optional(<UINavigationController: 0x7fba09065600>)
我发布了正确答案。现在可以了。感谢您为我指明正确的方向。这就是为什么你也能得到正确答案的原因;-)【参考方案2】:
现在我知道是什么原因造成的了。我将employeeViewController 嵌入到NavigationController 中。我直接连接了它,现在它可以工作了。我只需要像这样更改 prepareForSegue 方法:
if (segue.identifier == "ShowEmployeesSegue")
let controller = segue.destinationViewController as! EmployeesTableViewController
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
controller.coreDataStack = coreDataStack
controller.companyToView = companyToView as? Company
【讨论】:
以上是关于UISplitViewController:在 detailView 中导航的主要内容,如果未能解决你的问题,请参考以下文章
在 UIViewControllers 和 UISplitViewController 之间导航 [关闭]
UISplitViewController + UISearchController 显示搜索细节
在 UISplitViewController 和 UIViewControllers 之间导航 [重复]
在 UISplitViewController 中覆盖 RootViewController.xib