将一个UIViewController添加到UIScrollView中

3
我有一个UIViewCOntroller,我在其中添加了许多UI组件,如标签、文本框等。现在,我需要再添加一些字段,但我发现我的视图控制器中没有足够的空间来添加任何内容。所以我考虑添加一个scrollView来解决这个问题。是否有一种方法可以将包含所有UI组件的UIViewController添加到UIScrollView中?如何通过编程实现此操作?

你混淆了视图和视图控制器,它们并不是同一回事。确保你完全理解它们之间的区别。例如,在UIKit中没有叫做UIScrollViewController的类。 - Caleb
谢谢您指出这个问题,我已经相应地编辑了我的问题。 - Illep
4个回答

1
例如,如果您在视图控制器方法A中:
UIViewController * v =  [[UIViewController alloc] init];
UIScrollView * sc =  [[UIScrollView alloc] init];

...使用setFrame为v和sc帧设置框架

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

[self.view addSubview:sc];

@Illep:我添加了UIViewController的视图:v.view。 - Beber
等一下.. self.view 是我添加所有按钮、文本字段等的地方,那么 v.view 包含什么(它包含我添加的按钮、文本字段吗)?最终,我能否在不对 self.view 中的 UI 组件进行任何更改的情况下滚动视图? - Illep
所以只需在 self.view 中添加一个 UIScrollView,并将所有组件添加到 sc.view 中。否则,当您使用名为“ExempleViewController”的当前 UIViewController 创建一个实例时(其中包含所有组件),只需将 exempleViewController.view 添加到您同时创建的 UIScrollView 实例视图中。 - Beber

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

这是很多工作,难道没有更简单的方法吗?问题在于我没有使用界面构建器来创建UI,所有东西都是通过代码创建的,所以要做出这些改变需要一段时间。那么难道没有其他方法吗? - Illep
另一种方法是在另一个UIViewController上添加一个UIScrollView,并将当前视图控制器的实例添加到UIScrollView中。但是后面可能会出现问题! - Saurabh

0

在 iPhone 或 iPod 上,UIViewController 应该是全屏的。 你不应该将 UIViewController 添加到 UIScrollView 中, 而是可以将 UIScrollView 添加到 UIViewController 中, 并将 UIViewController 中的所有组件移动到 UIScrollView 中。


@Beber 所做的是将一个 ViewController 添加为 UIScrollView 的子视图。 - IPaPa

0

你不能将一个滚动视图添加到一个视图控制器中。但是你可以将视图控制器的主视图添加到一个滚动视图中。


你对@Beber的回答有什么看法?我现在不在我的Mac上,所以无法尝试它,但根据他的代码,他已经将一个UIViewController添加到了UIScrollView中。你有什么评论? - Illep
在他的代码中,他没有将一个UIViewController添加到ScrollView中,而是将ViewController的主视图添加到了ScrollView中 - 这正是我建议的。视图可以添加到视图中。ViewControllers不会被添加到视图中,但它们的视图会被添加进去。 - ader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接