用于UIScrollViews内容的iOS VIewController

时间:2013-05-23 08:00:51

标签: ios objective-c uiviewcontroller scrollview subview

我的应用中有一个UIScrollView我正在添加一些来自xib的自定义视图,因此您可以在ScrollView中水平滚动(Tab键)以更改显示的那个。目前这可行,但我有一个连接视图到控制器的问题。

我不知道如何选择ViewControllers的结构(我应该使用多少个控制器,使用嵌套控制器......)。

我有一个rootView及其控制器。在这个rootView中有一个ScrollView,这个ScrollView包含一些从xib加载的自定义视图(子视图)(使用loadNibNamed方法)。

我的问题我是否应对ViewController使用与rootView相同的subviews ScrollView?问题是ViewControllers视图属性已经绑定到rootView(super view中的rootView),因此当我将此视图属性也绑定到子视图时,会发生错误。此外,如果我为这些子视图创建新控制器,也会发生错误。

当我在subviews rootView中使用ScrollView方法将loadNibNamed加载到ViewController时,这些subviews的所有者为ViewControllerloadNibNamed方法的所有者参数设置为self)。

请告诉我,我应该怎么解决这个问题?我应该为controller使用subviews,我应该创建新的,还是应该使用现有的controller。或者我应该使用一些嵌套的ViewControllers?我是iOS开发的新手,所以我现在使用{{1}}混乱......

1 个答案:

答案 0 :(得分:1)

如果没有太多与控制子视图相关的代码,则只能使用根视图控制器。即单个场景的单个控制器将是一个很好的MVC方法。

如果您以这种方式使用它,请不要更改视图控制器的视图属性,因为这会混淆根视图 - 控制器设置。如果您只需要对此视图的引用,那么您已经拥有了loadNibNamed的返回值。此外,如果要将所有者设置为self,则创建其他实例变量以保存子视图(而不是view属性),以便您可以从xib本身指定所有者并相应地连接引用。

但是,如果您有关于子视图的大量业务逻辑,那么创建单独的视图控制器就可以了(如果所有子视图的行为方式大致相同,如果你得到的话,那么单个类就没问题了意思是)。在子视图的xib中,您可以将此类指定为所有者,并且在使用loadNibNamed:时,您应该创建subviewcontroller类的对象并将其指定为所有者。通过这种方式,您可以模块化整个事物。