通过分割视图控制器使用多个详细视图

发布于 2024-12-07 19:21:17 字数 195 浏览 0 评论 0原文

如您所知,UISplitViewController 只有一个根控制器和一个详细视图控制器,但我想使用另一个详细视图控制器。

当我从根控制器(弹出窗口控制器)中选择列表项时,选择应该触发不同的详细信息视图 - 即,row1 触发详细信息视图1,row2 触发详细信息视图2,按钮项触发详细信息视图3,等等。 我怎样才能实现这个目标?

As you know, a UISplitViewController has one root controller and one detail view controller only, but I want to use another detail view controller.

When I select the list items from the root controller (popover controller), the selection should fire different detail views -- i.e., row1 fires detail view1, row2 fires detail view2 and a button item fires detail view3, etc.
How can I achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

叶落知秋 2024-12-14 19:21:17

Apple 的这个项目是 2012 年的,没有使用故事板。如果您正在寻找非故事板解决方案,它会很好地工作,但在 Xcode 6 中您应该利用故事板中新的“显示详细信息”segue。

这是一个快速示例项目,它展示了如何通过使用 Show 在同一分割视图上使用多个详细信息视图控制器来自主视图控制器的详细信息。

That project from Apple is from 2012 and doesn't use storyboards. If you are looking for a non-storyboarded solution, it will work fine but in Xcode 6 you should be taking advantage of the new Show Detail segue in storyboards.

Here's a quick example project that shows how to use multiple detail view controllers on the same split view by using the Show Detail segue from the Master View Controller.

罗罗贝儿 2024-12-14 19:21:17

Apple 有一个项目可以满足您的需求。 MultipleDetailView

此示例展示了如何使用 UISplitViewController 来管理
多个细节视图。

该应用程序使用带有表视图的分割视图控制器
控制器作为根视图控制器。当您在中进行选择时
表视图,创建一个新的视图控制器并将其设置为分割
视图控制器的第二个视图控制器。

根视图控制器定义了一个协议
(SubstitutableDetailViewController) 详细视图控制器必须
采纳。协议指定隐藏和显示栏按钮的方法
控制弹出框的项目。

There's a project from Apple that covers exactly what you need. MultipleDetailViews

This sample shows how you can use UISplitViewController to manage
multiple detail views.

The application uses a split view controller with a table view
controller as the root view controller. When you make a selection in
the table view, a new view controller is created and set as the split
view controller's second view controller.

The root view controller defines a protocol
(SubstitutableDetailViewController) that detail view controllers must
adopt. The protocol specifies methods to hide and show the bar button
item controlling the popover.

对岸观火 2024-12-14 19:21:17

在斯威夫特

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let storyBoard = UIStoryboard(name: "Main", bundle: nil)
    let imageGalleryVC = storyBoard.instantiateViewController(withIdentifier: "ImageGallerySID") as! ImageGalleryViewController
    splitViewController?.showDetailViewController(imageGalleryVC, sender: nil)
}

In Swift

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let storyBoard = UIStoryboard(name: "Main", bundle: nil)
    let imageGalleryVC = storyBoard.instantiateViewController(withIdentifier: "ImageGallerySID") as! ImageGalleryViewController
    splitViewController?.showDetailViewController(imageGalleryVC, sender: nil)
}
蘑菇王子 2024-12-14 19:21:17

我知道这是一篇迟到的帖子,因为这是 6 年前提出的问题,并且是去年活跃的。
但是有一种方法可以为分割视图控制器提供多个详细视图。

通过将每个细节控制器嵌入到其自己的导航控制器中,并使用“显示细节”segue 从主视图链接到每个控制器,您可以通过使用关联的标识符然后从主视图功能来实现视图之间切换的结果didSelectRowAt' 选择一行,您可以在其中选择您希望查看的详细信息视图。

if indexPath.row == 0 {
    performSegue(withIdentifier: "secondView", sender: self)
}
if indexPath.row == 1 {
        performSegue(withIdentifier: "thirdView", sender: self)
    }

输入图片此处描述

I know this is a late post as this was asked 6 years ago and active last year.
But there is a way to have multiple detail views for a split view controller.

By embedding each detail controller into its own navigation controller and linking from the master view to each using the 'show detail' segue, you are able to achieve this result of switching between views by using an identifier associated and then from the master view function 'didSelectRowAt' selecting a row is where you can select which detail view you wish to see.

if indexPath.row == 0 {
    performSegue(withIdentifier: "secondView", sender: self)
}
if indexPath.row == 1 {
        performSegue(withIdentifier: "thirdView", sender: self)
    }

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文