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,因此它不需要一个),但我希望能够通过动画转换回来并值得。
我的 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 的 DetailView
点击员工后测试公司 1 的员工列表,“<返回”按钮可见
iPad: http://i.stack.imgur.com/ObBto.png
测试公司 1 的 MasterView 和 DetailView
测试公司 1 的员工列表,没有“<返回”-返回测试公司 1 的 DetailView 的按钮可见
根据一些了解,以下可能是您的解决方案。
检查代码,如果它的操作是 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 }
我有一个带有 SplitView 的应用程序,可以让您将公司添加到数据库中。 在 masterView 中,公司以其各自的公司名称显示。 点击其中一家公司会显示 "viewCell" 中的地址(实际上不是单元格,只是 viewController 中的一个视图,只是更容易解释)。 "viewCell" 下面是一个 tableView(仍然在同一个 viewController 中)有一行:"Employees"。点击它会引导我进入一个新的 tableViewController,其中列出了我可以添加或已添加的所有员工。
我想使用 navBarItem 在 CompanyDetailViewController 和 EmployeesTableViewController 之间来回移动。
在 iPhone 这与自动创建的“<返回”navBarItem 的过渡效果很好。
在 iPad 这不起作用。它不显示任何 navBarItem。我知道原因(EmployeeTableViewController
"thinks" 它是 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 的 DetailView
点击员工后测试公司 1 的员工列表,“<返回”按钮可见
iPad: http://i.stack.imgur.com/ObBto.png
测试公司 1 的 MasterView 和 DetailView
测试公司 1 的员工列表,没有“<返回”-返回测试公司 1 的 DetailView 的按钮可见
根据一些了解,以下可能是您的解决方案。
检查代码,如果它的操作是 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 }