iOS/Obj-C UIScrollView 视图未正确添加

Posted

技术标签:

【中文标题】iOS/Obj-C UIScrollView 视图未正确添加【英文标题】:iOS/Obj-C UIScrollView views not being added properly 【发布时间】:2013-01-16 20:38:39 【问题描述】:

我正在尝试使用连接的页面控件制作基本的滚动视图,但我的代码遇到了一些问题。我的 viewDidLoad 方法如下所示:

- (void)viewDidLoad
[super viewDidLoad];
NSLog (@"View did load");
// Do any additional setup after loading the view, typically from a nib.

scrollView.delegate = self;
scrollView.pagingEnabled=YES;

NSArray *frames = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil];
for (int i = 0; i < frames.count; i++) 
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * i;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;

    UIView *subview = [[UIView alloc] initWithFrame:frame];
    subview.backgroundColor = [frames objectAtIndex:i];
    [self.scrollView addSubview:subview];
    NSLog (@"Looped, i = %i color = %@", i, [frames objectAtIndex:i]);


self.scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * frames.count, scrollView.frame.size.height);
NSLog(@"The width is: %f", self.scrollView.frame.size.width);

问题似乎是我尝试添加到视图中的彩色框架从未出现(甚至不是第一个)。如果我没有启用 ARC,我会在每个循环结束时释放 CGRect 帧,但它确实应该用 ARC 自己做,对吧?

当我在模拟器和实际手机上运行该应用程序时,我得到一个黑屏,底部有 UIPageControl 点。当我在 ScrollView 上滑动手指时没有任何反应,但如果我将它拉到一侧很远,pageControl 会移动到下一个“点”。

最后一个NSLog语句总是输出0.0000,表示没有任何视图被添加到滚动视图中。

非常感谢所有帮助:)

【问题讨论】:

你能告诉我们你在哪里初始化了滚动视图吗?笔尖文件是否正确设置?你能记录下 self.scrollView 的值吗? 从标题:(at)property (nonatomic, retain) IBOutlet UIScrollView *scrollView;从实现:(at)synthesize scrollView; scrollView 连接到 Interface Builder 中标题中的属性,我正在使用情节提要。据我所见,包含滚动视图的情节提要视图中没有错误。谢谢你的回答:) 【参考方案1】:

问题出在 viewDidLoad 中。将您的代码移动到 viewDidAppear: 它应该可以正常工作。框架尚未在 viewDidLoad 中设置。

【讨论】:

哇,非常感谢!这立即解决了我的问题!荣誉:) 我可以再问你一个问题吗,@rdelmar ?如果我希望在这些视图中放置三个不同的视图控制器,而不是使用不同颜色的空白页面 - 我将如何实现? @HenrikHillestadLøvold,这有点复杂。您需要将它们添加为包含滚动视图的 viewController 的 childViewController。您应该阅读 Apple 关于自定义容器控制器的文档,以了解如何使用它们。 谢谢,我会阅读文档。再次感谢您的帮助!

以上是关于iOS/Obj-C UIScrollView 视图未正确添加的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是允许本地通知。 iOS 8. Obj-C

使用 iOS/Obj-c 按类型搜索 Apple App Store

如何在iOS Obj-C中隐藏键盘触摸UITableView

检查互联网连接 iOS - Obj-C

崩溃 [RMMessageFormatter getFormatedStatusFromDisk] (IOS obj-c)

iOS Obj-C 自定义数字文本字段