我在这里(以及StackOverFlow上关于此主题的其他地方)找到了信息,这让我开始思考我的先前答案。如果您有很多顶级对象,这只会变得乏味。
然后,我想到可以创建一个“辅助”对象,因此我创建了一个项目来演示该技术。基本上,助手在视图中具有每个感兴趣对象的出口。ViewController本身有两个Helper对象(一个用于p,一个用于l),并且您在NIB中实例化它们。在方向更改时,将视图控制器的helper指针切换到适当的helper,然后更新self.view。它真的很简单(这个文本更难)。
那么,你会如何开始?好吧,如果您预先知道需要两个单独的视图,那么这有所帮助。一旦知道了这一点,请参考下面引用的项目中的Helper模板,进行调整,将其添加到NIB中,然后将帮助连接到肖像视图中的适当对象上。视图控制器本身只有对两个助手的引用和“curHelper”指针。 Helper ivars是公共的,因此视图控制器可以引用诸如“curHelper->label1.text = ...”之类的项目 - 成本是单个指针解除引用(也可以使用属性 - 您的呼叫)。
此外,您还可以直接连接来自任一视图中的对象的IBActions。因此,让我们逐步进行:
- 创建NIB
- 创建Helper对象,并在nib中实例化一个称为Portrait的对象
- 将所有IBOutlets添加到Helper对象中,在dealloc和viewWillUnload中处理它们
- 在ViewController中正常放置IBActions
- 将NIB连接起来 - Helper-> Portrait视图输出,操作传递给ViewController
- 在肖像中使其全部运作
- 添加新的Helper对象,将其称为Landscape
- 复制当前肖像视图,旋转它并保存它
- 将景观助手的输出线路连接到新的景观视图(操作已经为您设置!)
显然,从现在开始,您需要进行重复更改,但是在任何双重nib方案中,您都必须这样做。在上述技术中,所有出口名称保持不变。
当ViewController收到“viewDidUnload”时,需要将其发送到两个帮助程序,并使Helpers解除分配(然后解除分配其输出)。
注意:我只是把它放在一起看看它的样子。如果您想查看代码和一个非常小的演示,请从public dot me dot com slash dhoerl下载它,在iPhone文件夹中命名为Helpers.zip。如果需要,我会更新此内容和此文本。