ScrollView和子视图在代码和故事板之间不匹配?

时间:2014-09-17 20:14:09

标签: ios objective-c storyboard interface-builder

我在Storyboards文件中创建了一个UIScrollView,并将其正确连接到我的控制器IBOutlet属性。以下是故事板中的内容:

  • 的UIScrollView
    • UIView 1
    • UIView 2
    • UIView 3
    • 约束 ...

这是我在viewDidLoad上运行的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"COUNT: %d", [self.scrollView subviews].count);
    for(UIView *v in [self.scrollView subviews]) {
        NSLog(@"View: %@", v);
    }
}

因此,我希望在我的控制台日志中看到我的3个视图。但是,它正在打印一些完全不相关的东西(2个UIImageViews?):

2014-09-17 13:06:33.155 Project[6333:652705] COUNT: 2
2014-09-17 13:06:33.156 Project[6333:652705] View: <UIImageView: 0x7b094460; frame = (233 124.5; 7 3.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x7b0947c0>>
2014-09-17 13:06:33.156 Project[6333:652705] View: <UIImageView: 0x7b094fb0; frame = (236.5 121; 3.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x7b095080>>

我可能在这里做错了,但Interface Builder或Outlet连接本身是否存在某种缓存?

1 个答案:

答案 0 :(得分:0)

图像视图是滚动视图边缘的滚动条。调用viewDidLoad时,视图层次结构尚未完全安装。将代码移到awakeFromNib方法中(并注意图像视图 - 通常不依赖于subviews,保持对要访问的视图的显式引用)。