我在动态添加子视图到UIScrollView时遇到了很多麻烦。滚动视图对在NIB中创建的内容工作正常,但由于要显示的子视图取决于我的应用程序中的数据(图像,标签,单选按钮等的混合),我需要能够动态地创建和显示它们。在UIScrollView中动态添加子视图不出现
根据我读过的所有内容,它在各种网站和Apple文档中都显得非常简单。在视图控制器的viewDidLoad,我已经添加了下面的代码,
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,随后便出现(但不是在滚动内容显然)。我甚至尝试将代码添加到viewDidAppear中,以防我误解了没有运气的事件顺序。
当我检查调试器时,我注意到滚动视图的地址是0x0,我认为它的意思是null,由于某种原因,这可以解释为什么它不工作。我假设如果我将这个scrollView指针连接到IB的实际滚动视图,它会自动分配正确的地址。这是不正确的?如果是这种情况,我该如何获取视图的地址?
- UPDATE -
感谢您的所有反馈。我按照每个人的建议检查了一切,当然这一切都是正确的。我不需要设置内容的大小,因为我在NIB中有一些其他虚拟标签(用于测试滚动是否正常)。但我会记住,在以后的日子里:-)
有趣的是,虽然在再次检查代码并没有做任何改变之后,我再次运行它,它只是工作!不知道为什么,但我会后的原因如果我看着办吧......
您是先拨打[super viewDidLoad]吗? – Colin
你可以发表更多的代码吗?特别是,我对a)如何初始化UIScrollView实例感兴趣,以及b)您已将scrollView附加到self.view的父ViewController中的位置。谢谢! –
@AsimIhsan我没有动态创建滚动视图本身,只有子视图。我使用Interface Builder在UIViewController中创建了滚动视图,并将其设置在那里,因为我无法以其他方式使用它。 – richard