UISplitViewController:在 detailView 中导航

UISplitViewController: Navigating within detailView

我有一个带有 SplitView 的应用程序,可以让您将公司添加到数据库中。 在 masterView 中,公司以其各自的公司名称显示。 点击其中一家公司会显示 "viewCell" 中的地址(实际上不是单元格,只是 viewController 中的一个视图,只是更容易解释)。 "viewCell" 下面是一个 tableView(仍然在同一个 viewController 中)有一行:"Employees"。点击它会引导我进入一个新的 tableViewController,其中列出了我可以添加或已添加的所有员工。

我想使用 navBarItem 在 CompanyDetailViewController 和 EmployeesTableViewController 之间来回移动。

在 iPhone 这与自动创建的“<返回”navBarItem 的过渡效果很好。 在 iPad 这不起作用。它不显示任何 navBarItem。我知道原因(EmployeeTableViewController "thinks" 它是 masterView 的 detailView,因此它不需要一个),但我希望能够通过动画转换回来并值得。

我的 prepareForSegueCompanyDetailViewEmployeesTableViewController 看起来像这样:

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
}

更新:一些截图

根据一些了解,以下可能是您的解决方案。

检查代码,如果它的操作是 showDetailViewController:sender。

打开 select 故事板 -> 打开为源代码。 找到你的对象(可能是 x 和 y)。

工作连接 segue 应该如下所示

<connections>
               <segue destination="UXJ-Si-1aa" kind="show" id="aDD-wp-6dZ"/>

</connections>

如果可能有,请删除该操作,然后按以下方式重试。 Select 按钮,cntrl + 将指针拖动到您的 ViewController。图片显示

如果你有像下面这样的 segue 一个将不起作用 ,并且 将不会显示 UINavigationBar

    <connections> 
    <segue destination="UXJ-Si-1aa" kind="show" action="showDetailViewController:sender:" id="A8L-Ad-PKT"/> 

</connections>

现在我知道是什么原因造成的了。我将 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 }