我有一个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
答案 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中,从而失去控制器和视图的独立性。
谢谢,佩德罗