如何使用 UIContainerView 在 UISplitViewController master 上隐藏 iPad 嵌入式辅助 UITableViewController 的 DetailView
How can hide on iPad an embedded secondary UITableViewController's DetailView on a UISplitViewController master using UIContainerView
首先对不起我的英语。
我有一个 UISplitViewController,我用 UIViewController 替换了模板主 UITableViewController,放置了一个 UITableView 和 UIContainerView,其中包含用于设置的第二个静态 UITAbleViewController,其中一个设置单元格具有另一个细节 UITableViewController 以更改其值。在 iPhone 上运行良好,但在 iPad 上使用该 splitviewcontroller 此设置值 table 显示在 splitviewcontroller 详细视图上。它也很好,但我不能再隐藏了。 (在 iPhone 上有一个后退按钮,效果很好)
我找不到解决方案。
我的问题是如何隐藏该详细视图以显示拆分视图的原始详细视图?
这是我从故事板中获取的 3 张图片,初始视图以及设置值何时打开(无法隐藏 n iPad)
任何建议都会很好。谢谢
Storyboard
最后我做了一个简单的解决方案。删除设置 tableviewcontroller 上的显示详细故事板 segue 并为自定义推送定义 didSelectRowAtIndexPath
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//i want only the third row to perform an action
if indexPath.row == 2 {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let groupListViewController = mainStoryboard.instantiateViewControllerWithIdentifier("GroupListViewController") as! GroupListViewController
self.navigationController!.pushViewController(groupListViewController, animated: true)
}
}
这样我就可以将任何视图推送到左侧或右侧的拆分视图,因为它们都有导航控制器。在此之后,我在推送的 tableviewcontroller 上定义了相同的函数,触发一些动作并返回。它对 iPad 和 iPhone 也很有效。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.appDelegate.client.selectedGroupIndex = indexPath.row
//The main master viewcontroller of split view
let vehicleListViewController = self.navigationController?.viewControllers.first as! VehicleListViewController
//settingsviewcontroller that embedded in master viewcontroller
let vehicleListSettingsViewController = vehicleListViewController.childViewControllers.first as! VehicleListSettingsViewController
//call a custom function on embedded settings viewcontroller to change selected value
vehicleListSettingsViewController.changeGroup(indexPath.row)
//refresh splitviewcontroller's master tableview
vehicleListViewController.tableView.reloadData()
//Easy go back to masterview
self.navigationController?.popViewControllerAnimated(true)
}
首先对不起我的英语。 我有一个 UISplitViewController,我用 UIViewController 替换了模板主 UITableViewController,放置了一个 UITableView 和 UIContainerView,其中包含用于设置的第二个静态 UITAbleViewController,其中一个设置单元格具有另一个细节 UITableViewController 以更改其值。在 iPhone 上运行良好,但在 iPad 上使用该 splitviewcontroller 此设置值 table 显示在 splitviewcontroller 详细视图上。它也很好,但我不能再隐藏了。 (在 iPhone 上有一个后退按钮,效果很好) 我找不到解决方案。 我的问题是如何隐藏该详细视图以显示拆分视图的原始详细视图? 这是我从故事板中获取的 3 张图片,初始视图以及设置值何时打开(无法隐藏 n iPad)
任何建议都会很好。谢谢 Storyboard
最后我做了一个简单的解决方案。删除设置 tableviewcontroller 上的显示详细故事板 segue 并为自定义推送定义 didSelectRowAtIndexPath
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//i want only the third row to perform an action
if indexPath.row == 2 {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let groupListViewController = mainStoryboard.instantiateViewControllerWithIdentifier("GroupListViewController") as! GroupListViewController
self.navigationController!.pushViewController(groupListViewController, animated: true)
}
}
这样我就可以将任何视图推送到左侧或右侧的拆分视图,因为它们都有导航控制器。在此之后,我在推送的 tableviewcontroller 上定义了相同的函数,触发一些动作并返回。它对 iPad 和 iPhone 也很有效。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.appDelegate.client.selectedGroupIndex = indexPath.row
//The main master viewcontroller of split view
let vehicleListViewController = self.navigationController?.viewControllers.first as! VehicleListViewController
//settingsviewcontroller that embedded in master viewcontroller
let vehicleListSettingsViewController = vehicleListViewController.childViewControllers.first as! VehicleListSettingsViewController
//call a custom function on embedded settings viewcontroller to change selected value
vehicleListSettingsViewController.changeGroup(indexPath.row)
//refresh splitviewcontroller's master tableview
vehicleListViewController.tableView.reloadData()
//Easy go back to masterview
self.navigationController?.popViewControllerAnimated(true)
}