在MonoTouch中具有多个视图的单个ViewController

时间:2011-08-19 14:00:06

标签: ios attributes xamarin.ios xib viewcontroller

我有一个iPad应用程序,它有一个主ViewController和它的主视图,但我有许多叠加(实现为单独的视图)。我希望所有这些视图都由主视图控制器控制/拥有。

这组覆盖视图被打包到一个XIB中(仅用于IB设计目的,没有代码隐藏),并从主视图控制器手动加载,并为每个视图控制器转换为适当的View类,实现为单独的。每个的cs文件。

一切正常,但是因为在视图中XIB所有者被设置为主ViewController类(为了生成事件,出口的设计器代码),它还为主视图控制器类生成一个Register属性,使用在主视图控制器XIB设计器文件中生成的相同寄存器属性进行组合。

我的问题是:有没有办法阻止MonoTouch / IB为视图XIB自动生成Register属性?

谢谢, 佩德罗

我正在使用XCode / IB 3.2.6,MonoTouch 4.0.5,MonoDevelop 2.4.2,MonoFramework 2.10.4

1 个答案:

答案 0 :(得分:0)

好的,我实施了一个解决方案,它符合我之前的要求但有一些缺点,可能适用于某些场景,而不适合其他场景。

我在后面的XIB /代码中实现了我的主视图控制器并将其称为MainBaseViewController。它只有最小的UI元素,因为它主要是所有其他视图的可视容器。然后我在一个名为MainViewController的独立.cs文件中创建了一个类(继承自(MainBaseViewController),它是一个部分类,用于连接由视图XIB生成的设计器代码。该类将保存视图控制器的所有逻辑唯一的缺点是MainBaseViewController中的任何UI元素(出口)都将由MonoTouch生成为私有,我需要在类实现中创建一些受保护的访问器,但它确定,因为它只是视图出口(但这可能是如果基础XIB有许多控件,则会出现问题。)

恢复:

  • MainBaseViewController类和XIB将为任何插座提供受保护的访问器,并且只为应用程序中的其他视图提供基本UI容器。

  • MainViewController是一个.cs文件,是一个继承自MainBaseViewController的部分类,实现了视图控制器的所有逻辑(管理所有其他视图)

  • 视图存储在MainViews XIB(后面没有代码)中,视图的文件所有者是MainViewController类,它生成可从MainViewController类访问的所有插件和事件。

    < / LI>
  • 单独的.cs文件为视图XIB中包含的每个视图实现每个特定逻辑,并在主控制器从视图XIB动态加载视图时创建。

此解决方案允许将视图存储在单独的文件中,视图控制器逻辑存储在另一个文件中(除了UI)和特定的视图逻辑分隔

任何其他解决方案或更好的设计模式?另一个更简单的选择是将所有视图粘贴在主控制器XIb中,从而失去控制器和视图的独立性。

谢谢,佩德罗