我想在RootViewController中的用户选择项上更改DetailView.
事实上,我不能只改变视图中的内容(DetailView),就像在模板中完成一样(在创建项目时检查“使用核心数据存储”).
我想在整个视图之间切换.
我试过了:
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; [appDelegate.detailViewController setView:curretnDetailViewController.view]; appDelegate.detailViewController = currentDetailViewController;
顺便说一下我不明白为什么我需要第2行(..setView:..)?为什么分配detailViewController(第3行)是不够的? – 代码看起来很糟糕=(
但无论如何,这并不完全符合我的要求.除detailView之外的所有内容都会消失.就像我改变了主视图,而不仅仅是DetailViewController
我想我应该在splitViewController中更改一些内容但是没有找到什么=(
感谢您的关注.
解决方法
首先你知道苹果有一个Multi Detail View的例子吗?它在这里Apple Examples
您必须了解splitviewcontroller是什么来了解Apple正在做什么.将splitview控制器视为设备窗口中的容器.这个容器有2个隔间,左侧较薄,右侧较大.现在要改变任何一侧,你必须用另一个类似大小和性质的隔间替换这个隔间.你不能放在一个不适合的隔间或做一些花哨的东西,因为它根本不适合.
在技术谈话中,在示例中找到以下代码. splitview控制器有一个包含2个视图的数组,您可以更改此数组中的视图.因此,在这个数组中是2个视图,左边称为navigationcontroller,右边是detailviewcontroller.如果您分配并启动视图并将其添加到这两个视图中的任何一个,则此视图将替换splitviewcontroller中的当前视图.
NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController,detailViewController,nil]; splitViewController.viewControllers = viewControllers;
现在到你的问题的第二部分 – 我认为是从左侧你想要能够总是能够选择一些东西并且能够改变右手……我是对的吗?
我已经阅读了三种不同的方法,并没有看到任何人说一个比另一个好.
>设置通知 – 当您点击左侧的内容时,会向右侧发送通知.
>当您从左侧的底部或根视图开始时,您将看到右侧的参考,如果您在左侧添加子视图等,则始终将参考传递到右侧.
>我这样做的方法是在appdelegate或rootview委托中设置一个协议,然后在一个视图上,我想与右边的人交谈,它使用这个协议,我的右侧实现了这个协议.这是我学到的最后一个,因为它是获取模态视图与其他视图对话的首选方法.
我不是专家,所以我没有为上面3个选项中的每一个添加代码,我建议你做一些谷歌搜索主题,你会看到例子.如果你真的被困在一个让我知道,我会尝试再次与谷歌找到我过去发现的例子.我认为最不复杂的是No.1.
我希望这能让你朝着正确的方向前进.