【问题标题】:iOS: How to dynamically change DetailView in SplitView template?iOS:如何在 SplitView 模板中动态更改 DetailView?
【发布时间】:2011-04-12 12:36:12
【问题描述】:

我有一个 SplitView 模板项目。 我想更改用户在 RootViewController 中选择项目的 DetailView。

事实上,我不能像在模板中那样更改视图 (DetailView) 中的内容(当您在创建项目时选中“使用核心数据存储”时)。 我想在整个视图之间切换。

我试过了:

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.detailViewController setView:curretnDetailViewController.view];
appDelegate.detailViewController = currentDetailViewController;

顺便说一句,我不明白为什么我需要 line#2 (..setView:..)?为什么分配 detailViewController(第 3 行)还不够? - 代码看起来很糟糕=(

但无论如何,这并不完全符合我的要求。除了 detailView 之外的一切都消失了。就像我改变了主视图,而不仅仅是 DetailViewController 的

我想我应该在 splitViewController 中更改一些内容,但没有找到什么=(

感谢您的关注。

【问题讨论】:

    标签: objective-c ios uisplitviewcontroller


    【解决方案1】:

    大约一周前我也有你的问题,我在这个论坛上也没有得到什么帮助。我希望我可以为你改变。

    首先你知道苹果有一个多细节视图的例子吗?在这里Apple Examples

    您必须了解什么是 splitviewcontroller 才能了解 Apple 在做什么。将 splitview 控制器视为设备窗口中的容器。这个容器有 2 个隔间,左侧较薄,右侧较大。现在要更换任一侧,您必须用另一个类似大小和性质的隔间替换这个隔间。你不能在里面放一个不适合的隔间,或者做一些花哨的事情,因为它根本不适合。

    在技术讨论中,请在示例中找到以下代码。 splitview 控制器有一个包含 2 个视图的数组,您可以更改此数组中的视图。因此,在这个数组中有 2 个视图,左边称为 navigationcontroller,右边是 detailviewcontroller。如果您分配并启动一个视图并将其添加到这两个视图中的任何一个,则此视图将替换 splitviewcontroller 中的当前视图。

    NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil];
    splitViewController.viewControllers = viewControllers;
    

    现在到您问题的第二部分 - 我认为您希望能够始终能够选择某些东西并能够更改右侧......我是对的吗?

    我已经阅读了三种不同的方法,但没有看到有人说其中一种比另一种更好。

    1. 设置通知 - 当您单击左侧的某个内容时,通知将发送到右侧。
    2. 当您从左侧的底部视图或根视图开始时,您将获得对右侧的引用,如果您将子视图等添加到左侧,则始终传递对右侧的引用。
    3. 我这样做的方法是在 appdelegate 或 rootview 委托中设置一个协议,然后在我想与右侧对话的视图上,它使用此协议,而我的右侧实现此协议。这是我学到的最后一个,因为它是让模态视图与其他视图对话的首选方法。

    我不是专家,因此我没有为上述 3 个选项中的每一个添加代码,我建议您对主题进行一些谷歌搜索,然后您会看到示例。如果你真的被困在一个让我知道,我会尝试用谷歌再次找到我过去找到的例子。我认为最简单的是 No.1。

    我希望这能让你朝着正确的方向前进。

    【讨论】:

    • 您是否还有上面列出的第三种方法的示例?
    猜你喜欢
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多