在这个项目中,为啥我无法访问从 nib 加载的视图属性?
Posted
技术标签:
【中文标题】在这个项目中,为啥我无法访问从 nib 加载的视图属性?【英文标题】:In this project, why am I unable to access my view's properties that I load from a nib?在这个项目中,为什么我无法访问从 nib 加载的视图属性? 【发布时间】:2013-11-08 17:58:07 【问题描述】:这是一个重现问题的示例项目:http://cl.ly/3O3M232f1q0R
我创建了UIView
的TutorialScreen
子类,并在一个xib 文件中创建了三个该类型的UIView
s,并通过将这些对象带入UIView
s 来在另一个类中使用它们:
self.tutorialScreen1 = [[[NSBundle mainBundle] loadNibNamed:@"View" owner:nil options:nil] objectAtIndex:0];
self.tutorialScreen1.translatesAutoresizingMaskIntoConstraints = NO;
self.tutorialScreen1.layer.cornerRadius = 8.0;
self.tutorialScreen1.alpha = 0.0;
[self.notificationWindow addSubview:self.tutorialScreen1];
在 xib 文件中,每个UIView
中间都有一个UILabel
,我为它创建了一个出口(并将所有三个UIView
s 链接到),称为textLabel
。
但是在我创建 tutorialScreen1
的那个类中,当我执行以下操作时:
NSLog(@"%@", self.tutorialScreen3.textLabel.text);
每次输出(null)
。它到底为什么要这么做?标签明确设置为“文本”,所以我不明白为什么它一直称它为空。我根本无法操作它,因为标签似乎不存在。
【问题讨论】:
【参考方案1】:您没有连接插座:
【讨论】:
在 .h 文件中向textLabel
添加了一个出口仍然没有做任何事情。
@Doug Smith 这不是你连接它的方式。请参阅第二个屏幕截图。
是否也可以通过约束来做到这一点?即使我以上述方式连接它们,我也试图在代码中访问它们,但失败了。 (假设我将文本标签顶部的自动布局约束连接到其父视图。)
@Doug Smith 我不知道 :)
@DougSmith,是的,您可以将 IBOutlets 设置为布局约束。您可以根据选择视图时看到的约束来制作它们,但有时从场景列表中选择它们会更容易。以上是关于在这个项目中,为啥我无法访问从 nib 加载的视图属性?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 iOS 不自动旋转从 Nib 加载的视图在被 didReceiveMemoryWarning 释放后?