2

我有一个 UIViewController,里面有一个 UIScrollView。

然后我创建了一个新的 UIView 子类,其中包含一些我想以编程方式添加到此 UIScrollView 中的属性,直到我的数据结束。

应该看起来像这张照片的东西: 嵌入uiview

我已经阅读了通过创建视图并将其类设置为自定义视图子类来做到这一点的其他主题,但我想以编程方式完成它并且它不起作用。

我该怎么做?

4

2 回答 2

6

从您的图像看来,您正在寻找从 nib 加载视图并将它们添加为 UIScrollView 的子视图。为此,请查看UINib 文档

你想创建你的 nib 并将它的主视图设置为你的 UIView 子类的一个实例,然后将 nib 加载到viewDidLoad你的 viewController 中,并将 nib 的视图添加为你的滚动视图的子视图(我假设它是你的 viewController 的子视图看法)。

您可以使用instantiateWithOwner:options:.

此方法取消归档每个对象,对其进行初始化,将其属性设置为其配置值,并重新建立与其他对象的任何连接

要从 nib 获取视图数组,您可以执行以下操作:

UINib *myNib = [UINib nibWithNibName:@"myNib" bundle:[NSBundle mainBundle]];
NSArray *viewsFromNib = [myNib instantiateWithOwner:nil options:nil];

我假设我们在 UIViewController 中,并且我们在(或之后)的某个地方viewDidLoad。然后,您将使用上面的数组并将视图添加为滚动视图的子视图。您可能需要设置这些视图的框架以正确放置它们,但这应该是微不足道的。

UIView *aView = [viewsFromNib objectAtIndex:0];
[self.scrollView addSubview:aView];

我希望这能让你朝着正确的方向前进。

编辑:

如果您想了解更多信息,您可能需要更深入地了解 nib 如何管理您的期望。与 UINib 文档链接的是“资源编程指南”,特别是nib 部分

于 2012-08-06T22:01:45.260 回答
1

安德烈,这可以相对容易地完成。确保导入要嵌入的类。然后用你的正常创建它们

ClassName *subview=[[ClassName alloc]init]; 
[subview.view setFrame:CGRectMake(x,y,width,height)]; 
[self.view addSubview:subview.view]; 

这会将其添加到您指定的 x,y 坐标中,其大小由您的宽度、高度指定。您可以在 viewDidLoad 中或在需要创建它们时执行此操作。

于 2012-08-06T21:57:24.050 回答