将 UIViewController 添加到 UIScrollView

Posted

技术标签:

【中文标题】将 UIViewController 添加到 UIScrollView【英文标题】:Adding a UIViewController to UIScrollView 【发布时间】:2011-12-22 16:47:53 【问题描述】:

我有一个UIViewCOntroller,我添加了很多 UI 组件、标签、文本字段等。

现在,我需要向它添加更多字段。而且我发现我的视图控制器中没有任何空间可以添加任何内容。所以我正在考虑添加一个滚动视图来解决这个问题。有没有我可以添加我的UIViewController 的地方,它将所有 UI 组件保存到UIScrollView

我怎样才能以编程方式做到这一点?

【问题讨论】:

你混淆了视图和视图控制器,它们不是一回事。确保您完全了解其中的区别。例如,UIKit 中没有名为 UIScrollViewController 的类。 感谢您指出,我已经相应地编辑了我的问题 【参考方案1】:

例如,如果您在 A viewController 方法中:

UIViewController * v =  [[UIViewController alloc] init];
UIScrollView * sc =  [[UIScrollView alloc] init];

...对 v 和 sc 帧使用 setFrame

[sc setScrollEnabled:YES];
[sc setContentSize:2000];
[sc addSubview:v.view];

[self.view addSubview:sc];

【讨论】:

@Illep:我添加了 UIViewController 的视图:v.view wait.. self.view 是我添加的所有按钮、文本字段等。那么 v.view 包含什么(它是否包含我添加的按钮、文本字段)?最终我是否能够滚动视图而不对 self.view 中的 UI 组件进行任何更改? 所以只需要在self.view中添加一个UIScollView,然后在sc.view中添加你所有的组件。否则,当您使用名为“ExempleViewController”的当前 UIViewController 创建一个实例时(此实例包含您的所有组件),只需在您在同一级别创建的 UIScrollView 实例视图中添加 exempleViewController.view。【参考方案2】:

为什么不在 UISCrollView 上添加所有控件,然后将此 UIScrollView 添加到 UIViewController 的视图中?

【讨论】:

工作量很大,难道没有更简单的方法吗?问题是我没有使用界面生成器来创建 UI,一切都是由代码创建的,所以进行这些更改需要一段时间。那么没有其他方法可以做到这一点吗? 其他方式 - 您可以在另一个 UIViewController 上添加 UIScrollView 并将当前视图控制器的实例添加到 UIScrollView.. 但以后可能会遇到麻烦!【参考方案3】:

iphone或ipod中的UIViewController,应该是全屏的 你不应该将 UIViewController 添加到 UIScrollView 您可以将 UIScrollView 添加到 UIViewController 并将 UIViewController 中的所有组件移动到 UIScrollView

【讨论】:

@Beber 上面所做的就是添加一个 ViewController 成为 UISCrollView 的子视图【参考方案4】:

您不能将滚动视图添加到 viewController。您可以将视图控制器的主视图添加到滚动视图中。

【讨论】:

您如何看待@Beber 的回答?我现在不在我的 Mac 中,所以我无法尝试,但根据他的代码,他已将 UIViewController 添加到 UIScrollView。你的cmets? 在他的代码中,他没有将 UIViewController 添加到 ScrollView 中,他已将 ViewController 的主视图添加到 ScrollView - 这是我的建议。视图可以添加到视图中。 ViewController 不会添加到视图中,但它们的视图会添加。

以上是关于将 UIViewController 添加到 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

将 UIViewController 的 UI 扩展到子 UIViewControllers

必须使用延迟实例化的UI视图将子视图添加到视图控制器两次

UIViewController 的视图没有出现在 UIPopoverController 中

将 UIViewController 的视图添加到另一个 UIViewController 的视图是不是可取?

从父 UIViewController 类继承 UI 组件?

如何将 UIViewController 作为子视图添加到 UIViewController(RootViewController)?