IBOutlet 未在 awakeFromNib 中连接

2024-04-21

此处链接的示例代码效果很好,允许 UIScrollView 显示分页图像并预览当前图像之前和之后的图像:

  • http://blog.proculo.de/archives/180-Paging-enabled-UIScrollView-With-Previews.html http://blog.proculo.de/archives/180-Paging-enabled-UIScrollView-With-Previews.html
  • https://github.com/alexrepty/Paging-Enabled-UIScrollView-With-Previews https://github.com/alexrepty/Paging-Enabled-UIScrollView-With-Previews

我试图将示例封装在可以重用的单个控件中。所以我创建了一个 PagingScrollView:

@interface PagingScrollView : UIView {
    IBOutlet UIScrollView * scrollView;
}

@property (nonatomic,retain) IBOutlet UIScrollView * scrollView;

@end

与污垢简单的实现

- (void) awakeFromNib
{
    [super awakeFromNib];

    NSLog(@"awake from nib");
}

在 PagingScrollView.xib 中,我放置了一个包含 UIScrollView 和 ARScrollViewEnhancer 的视图,与原始 ScrollViewPagingExampleViewController xib 中完全相同。其文件所有者的类设置为 PagingScrollView,其滚动视图出口设置为子 UIScrollView。

在 ScrollViewPagingExampleViewController 中,我简单声明:

IBOutlet PagingScrollView   *pagingScrollView;

在 IB 中,我拖动一个 View,将其类设置为 PagingScrollView,并将其 pagingScrollView 出口连接到 PagingScrollView。

在awakeFromNib中,scrollView属性为nil。我认为,由于scrollView是在同一个笔尖的IB中连接的,所以此时它就可用了。

令人困惑的是,在 ScrollViewPagingExampleViewController.xib 中,有一个名为scrollView 的空插座。这可能表明 PagingScrollView 的实例与 PagingScrollView.xib 中定义的实例不同。

因此,我无法使用实际的子视图填充 UIScrollView。我在这里做错了什么?


对于这个问题,这里有一个很好的答案:访问 awakeFromNib 中的视图? https://stackoverflow.com/questions/2723042/accessing-view-in-awakefromnib

长话短说,视图可能会在 awakeFromNib 中加载,但其内容会延迟加载,这就是为什么您应该使用 viewDidLoad 而不是 awakeFromNib 来实现您想要实现的目标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IBOutlet 未在 awakeFromNib 中连接 的相关文章

随机推荐