UISplitViewController:在detailView中导航

时间:2015-11-21 16:27:19

标签: ios xcode swift ipad uisplitviewcontroller

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

我想使用navBarItem在CompanyDetailViewController和EmployeesTableViewController之间来回传递。

在iPhone上,这可以很好地与自动创建的“< Back”navBarItem进行转换。 在iPad上这不起作用。它不显示任何navBarItem。我知道原因(EmployeeTableViewController“认为”它是masterView的detailView,因此它不需要一个),但我希望能够通过动画转换回来并值得。“

prepareForSegueCompanyDetailView的{​​{1}}内容如下:

EmployeesTableViewController

更新:一些屏幕截图

  • iPhone:http://i.stack.imgur.com/ivl86.png

    1. 拥有3家测试公司的MasterView

    2. Test Company 1的详细信息视图

    3. 点击员工后测试公司1的员工名单,“< Back” - 按钮可见

  • iPad:http://i.stack.imgur.com/ObBto.png

    1. MasterView with TestView of Test Company 1

    2. 测试公司1的员工名单,否“<返回” - 可以返回测试公司1的DetailView看到的按钮

2 个答案:

答案 0 :(得分:0)

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

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

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

工作连接segue应如下所示

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

</connections>

如果您有,请删除该操作,然后按以下方式重试。 选择按钮cntrl +将指针拖动到ViewController。如图所示

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

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

</connections>

enter image description here

enter image description here

答案 1 :(得分:0)

现在我知道是什么造成的了。我在employeeController中嵌入了employeeViewController。我直接连接它,现在它工作。我只需要更改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 }