您可以设置导航控制器和一个主视图。然后,您可以使用模板视图显示纵向和横向布局(2个附加视图)。
您将需要在主视图上设置控件,并确保每个控件都有唯一的标签。您的主视图将不会被使用,您可以将控件复制到两个模板视图,并根据您希望每个视图的外观进行设置。这样做的好处是每个视图都会保留其标签,这成为此实现中非常重要的一部分。
为此,您使用混合方法来编写一些UI代码和使用Interface Builder。获得两个模板设置后,为每个模板创建一个唯一标识符。你将不得不编写一些逻辑来处理视图及其子视图。根据您选择的模板返回这些集合的递归方法。
根视图控制器实现中的核心逻辑将需要检查isPortrait,并基于此,您将希望基于标识符加载正确的视图。
试验这个概念,看看它是否适合你。不使用具有独特控件的两个独立视图(而不是具有相同标签的共享方法)的主要好处是可以保持对原始子视图的访问。您在视图控制器中定义的任何实例变量都指向文本字段,标签等等,不管使用哪个模板视图,都会继续这样做。当数据结构保持不变时,这保持了模型,视图和控制器方法。
使用此方法,您仍然可以最大限度地使用界面构建器,并为每个视图布局模板,同时仍然可以灵活地编写一些自定义UI代码(如果您愿意)。仅使用接口构建器有时会受到一些限制,并且基于方向编写自定义代码会使您陷入一些乏味的工作。
希望这有助于一些。
有趣的方法。将尝试。谢谢 – Korbi 2012-01-15 14:31:01
如果您使用IBOutlets,那么只能分配给一个视图。 – Paranaix 2012-02-13 08:31:17
@Paranaix我可能不完全理解你的评论。原始问题提出了对横向和纵向模式具有不同界面的要求。如果您正在为相同的接口寻找不同的布局,这是另一个问题。也许你应该提出一个全新的问题。 – 2012-02-13 13:42:09