Iphone 在未显示的UIScrollView中动态添加的子视图
我在动态地将子视图添加到UIScrollView时遇到了很多问题。滚动视图适用于NIB中创建的内容,但由于要显示的子视图取决于应用程序中的数据(图像、标签、单选按钮等的混合),因此我需要能够动态创建和显示它们 根据我所读到的一切,在不同的网站和苹果的文档中,这似乎非常简单。在视图控制器的viewDidLoad中,我添加了以下代码Iphone 在未显示的UIScrollView中动态添加的子视图,iphone,ios,Iphone,Ios,我在动态地将子视图添加到UIScrollView时遇到了很多问题。滚动视图适用于NIB中创建的内容,但由于要显示的子视图取决于应用程序中的数据(图像、标签、单选按钮等的混合),因此我需要能够动态创建和显示它们 根据我所读到的一切,在不同的网站和苹果的文档中,这似乎非常简单。在视图控制器的viewDidLoad中,我添加了以下代码 UILabel *testLabel = [[UILabel alloc] init]; [testLabel setFrame:CGRectMake(50, 50,
UILabel *testLabel = [[UILabel alloc] init];
[testLabel setFrame:CGRectMake(50, 50, 100, 40)];
[testLabel setText:@"My Test label"];
[scrollView addSubview:testLabel];
[testLabel release];
标签根本不会出现在滚动视图中,但如果我将testLabel添加到self.view,它就会出现(但显然不会出现在滚动内容中)。我甚至尝试将代码添加到ViewDidEmerge中,以防我误解了事件的顺序,但运气不佳
当我检查调试器时,我注意到scroll视图的地址是0x0,我认为这意味着它为null,这可以解释为什么它不工作。我假设,如果我将这个scrollView指针连接到IB中的实际滚动视图,它将自动分配正确的地址。这是不对的吗?如果是这种情况,如何获取视图的地址
--更新--感谢所有的反馈。我按照大家的建议检查了所有的东西,当然都是正确的。我不需要设置内容的大小,因为我在NIB中有一些其他虚拟标签(用于测试滚动是否正常)。但我以后会记住这一点:-)
不过,有趣的是,在再次检查代码并且没有做任何更改之后,我再次运行了它,它就工作了!!不知道为什么,但如果我能找到原因,我会发布原因…当您使用scrollView时,您需要通过执行以下操作来设置内容大小:
scrollView.contentSize = CGSizeMake(@width,@height);
在这种情况下,如果你想看到标签,尺寸应该大于50,50
希望对您有所帮助如您的问题所述,您正在使用您在XIB中添加的scrollview 当您将一个插座声明为iBulllet UIScrollView*scrlvDynamicContent 并将其连接到interface builder中的scrollview,理想情况下,在调用viewdidLoad方法后,您将获得分配的scrollview 所以做一些
-(void)viewDidLoad{
[super viewDidLoad];
[self createDynamicView];
}
您可以在其中生成动态视图,如下所示
-(void)createDynamicView{
CGFloat yOffset = 0;
for (int i=0;i<5;i++) {
yOffset += 5;
UILabel* lblHeaderTitle = [[UILabel alloc] initWithFrame:CGRectMake(8, yOffset, 310, 21)];
[lblHeaderTitle setTextAlignment:UITextAlignmentLeft];
[lblHeaderTitle setFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0f]];
[lblHeaderTitle setText:[currentDict valueForKey:@"TITLE"]];
[lblHeaderTitle setTextColor:[UIColor blackColor]];
[scrlvDynamicContent addSubview:lblHeaderTitle];
[lblHeaderTitle release];
//INCREMNET in yOffset
yOffset += 25;
[scrlvDynamicContent setContentSize:CGSizeMake(320, yOffset)];
}
-(void)创建动态视图{
CGFloat yOffset=0;
对于(int i=0;您是先调用[super viewDidLoad]吗?您能发布更多代码吗?特别是,我对a感兴趣)如何初始化UIScrollView实例,以及b)父视图控制器中将scrollView附加到self.view的点。谢谢!@AsimIhsan我没有动态创建滚动视图本身,只创建子视图。我使用Interface Builder在UIViewController中创建滚动视图,并在其中进行设置,因为我没有创建滚动视图科林:是的,它叫德里查德。我也遇到了同样的问题。你能帮我吗?
[scrollView setFrame:CGRectMake(0,0,320,460)];
[scrollView setContentSize:CGSizeMake(100, 40)];
[self.view addSubview:scrollView];
UILabel *testLabel = [[UILabel alloc] init];
[testLabel setFrame:CGRectMake(50, 50, 100, 40)];
[testLabel setText:@"My Test label"];
[scrollView addSubview:testLabel];
[testLabel release];