在MonoTouch中具有多个视图的单个视图控制器



我有一个iPad应用程序,它像往常一样有一个主视图控制器和它的主视图,但是我有一些覆盖(作为单独的视图实现)。我希望所有这些视图都由主视图控制器控制/拥有。

叠加视图集被打包成一个XIB(仅用于IB设计目的,后面没有代码),并从主视图控制器手动加载并转换为每个视图的适当视图类,为每个视图实现为单独的。cs文件。

一切都很好,但是因为在视图XIB中,所有者被设置为主视图控制器类(为了生成事件的设计器代码,outlet),它还为主视图控制器类生成一个Register属性,这与已经在主视图控制器XIB设计器文件中生成的相同的Register属性相冲突。

我的问题是:是否有一种方法可以防止MonoTouch/IB自动生成视图XIB的注册属性?

谢谢,佩德罗

我使用的是XCode/IB 3.2.6, MonoTouch 4.0.5, MonoDevelop 2.4.2, monoframe 2.10.4

好的,我实现了一个解决方案,它符合我之前的要求,但有一些缺点,可能适合某些场景,而不是一个好的设计模式。

我在XIB/代码后面实现了我的主视图控制器,并称之为MainBaseViewController。它只有最少的UI元素,因为它主要是所有其他视图的视觉容器。然后,我在一个单独的。cs文件中创建了一个类,称为MainViewController(继承自(MainBaseViewController),这是一个部分类,以便连接到由视图XIB生成的设计器代码。这个类将保存视图控制器的所有逻辑。唯一的缺点是,MainBaseViewController中的任何UI元素(出口)将被MonoTouch作为私有生成,我需要在类实现中创建一些受保护的访问器,但这是ok的,因为它只是视图出口(但如果基本XIB有许多控件,这可能是一个问题)。

恢复:

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

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

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

  • 独立的。cs文件实现了视图XIB中包含的每个视图的每个特定逻辑,这些逻辑是在主控制器从视图XIB动态加载视图时创建的。

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

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

谢谢,佩德罗

最新更新