0

我的应用程序中有一个UIScrollView,我正在向它添加一些来自 xib 的自定义视图,以便您可以水平滚动(选项卡)ScrollView以更改显示的视图。现在这可行,但我在将视图连接到控制器时遇到问题。

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

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

我的问题是我应该对这些in使用与ViewControllerfor相同的方法吗?问题是视图属性已经绑定到 rootView ( in ),所以当我将此视图属性也绑定到子视图时,会发生错误。此外,如果我为这些子视图创建新控制器,也会发生错误。rootViewsubviewsScrollViewViewControllerssuper viewrootView

当我加载subviews到rootView的ScrollViewwithloadNibNamed方法时,这些的所有者是(方法的所有者参数设置为)。ViewControllersubviewsViewControllerloadNibNamedself

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

4

1 回答 1

1

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

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

但是,如果您要编写有关子视图的大量业务逻辑,则可以创建单独的视图控制器(如果您得到我的意思,如果所有子视图的行为或多或少相同,则单个类会很好)它。在子视图的 xib 中,您可以将此类指定为所有者,并且在使用loadNibNamed:时应创建 subviewcontroller 类的对象并将其指定为所有者。这样你就可以模块化整个事情。

于 2013-05-23T08:56:32.813 回答