A.R*_*Roe 8 uitabbarcontroller ipad uisplitviewcontroller ios swift
所以我添加了UISplitViewController一个嵌入了一个项目的项目UITabBarController.
该UISplitViewController有一个UINavigationController与他们自己的根控制器主控和细节的关系.
大师UINavigationController rootController有一个详细信息细节UINavigationController.
看这里:
一切都很简单吧?现在在TableViewController中我做了以下几点;
class TableViewController: TableViewController, UISplitViewControllerDelegate {
var collapseDetailViewController: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
splitViewController?.delegate = self
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
collapseDetailViewController = false
}
// MARK: - UISplitViewControllerDelegate
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool {
return false
}
Run Code Online (Sandbox Code Playgroud)
我也有一个UISplitViewController扩展并执行以下操作;
extension UISplitViewController: UISplitViewControllerDelegate {
public override func viewDidLoad() {
self.extendedLayoutIncludesOpaqueBars = true
}
}
Run Code Online (Sandbox Code Playgroud)
完成所有这些后,我遇到了以下问题;
当点击tableviewcell以显示细节视图时,在横向iPad上横向而不是右侧时,主视图左侧窗格中将打开详细视图.我也无法弄清楚如何在iPad或iPhone上使用Portrait时将主视图显示为第一个视图.这两个问题可能有关,也可能没有关系我不确定.
在移动设备上,标签栏上方有一个底栏,我无法弄清楚如何删除.我在iPad上遇到了同样的问题,直到我在UISplitViewController扩展中添加了代码,viewDidLoad但这并没有影响移动设备.看这里,
PS:我不确定问题是否太长,我认为最好将所有内容放在上下文中.此外,我一直在做大量的研究,但我在swift中找不到任何使用UITabBarController的资源.
您已经很接近了,只需执行以下操作即可。
保留带有详细 Segues 的分割视图布局,并为以下方法返回 true ,并删除与变量有关的其余代码collapseDetailViewController。
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
将以下内容放入主视图控制器中
self.splitViewController!.delegate = self;
self.splitViewController!.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
self.extendedLayoutIncludesOpaqueBars = true
Run Code Online (Sandbox Code Playgroud)
添加self.extendedLayoutIncludesOpaqueBars = true到您的详细视图控制器,如前面的答案所述。这应该会删除视图控制器上出现的栏。
另外,如果您想要一些额外的功能,如果您希望详细视图在 iPad 上使用全屏,请添加以下内容。
navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
navigationItem.leftItemsSupplementBackButton = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6415 次 |
| 最近记录: |