我的应用中有一个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
的所有者为ViewController
( loadNibNamed
方法的所有者参数设置为self
)。
请告诉我,我应该怎么解决这个问题?我应该为controller
使用subviews
,我应该创建新的,还是应该使用现有的controller
。或者我应该使用一些嵌套的ViewControllers
?我是iOS开发的新手,所以我现在使用{{1}}混乱......
答案 0 :(得分:1)
如果没有太多与控制子视图相关的代码,则只能使用根视图控制器。即单个场景的单个控制器将是一个很好的MVC方法。
如果您以这种方式使用它,请不要更改视图控制器的视图属性,因为这会混淆根视图 - 控制器设置。如果您只需要对此视图的引用,那么您已经拥有了loadNibNamed
的返回值。此外,如果要将所有者设置为self,则创建其他实例变量以保存子视图(而不是view
属性),以便您可以从xib本身指定所有者并相应地连接引用。
但是,如果您有关于子视图的大量业务逻辑,那么创建单独的视图控制器就可以了(如果所有子视图的行为方式大致相同,如果你得到的话,那么单个类就没问题了意思是)。在子视图的xib中,您可以将此类指定为所有者,并且在使用loadNibNamed:
时,您应该创建subviewcontroller类的对象并将其指定为所有者。通过这种方式,您可以模块化整个事物。