UITextView 和 UILabel 子视图属性为零
Posted
技术标签:
【中文标题】UITextView 和 UILabel 子视图属性为零【英文标题】:UITextView and UILabel Subview Properties are nil 【发布时间】:2014-07-10 22:53:52 【问题描述】:在我的一个视图控制器中,我有以下结构:
+-View
+-Scroll View 1
+-UIView
+-Scroll View 2
...我将三个子视图添加到 Scroll View 2 中,其中一个包含一系列 UITextViews 和 UILabels 作为类似表单的结构。
我看到的问题是,当我尝试从视图控制器级别访问引用这些控件的属性时,它们将为零。但是,如果我在包含 UITextFields 和 UILabels 的 UIView 内的 awakeFromNib 中设置断点,则属性是有效的......这几乎就像引用消失了一样。
我可以清楚地看到它们存在,如果我在设置断点后在调试控制台中执行以下操作,我肯定会得到视图图输出到控制台:
po [self.profileEditView recursiveDescription]
这听起来对任何人来说都很熟悉吗?如果是,我该如何补救?
我正在考虑做的一件事就是不尝试直接访问这些属性,因为目标是让视图控制器成为那些 UITextView 控件的代表,以便它可以通过调整 Scroll 来响应成为第一响应者每个文本视图获得焦点时视图 1 的位置。这只是更麻烦,但如果这是我必须做的,我会走那条路。
我以前从未见过这种情况,所以我觉得这很奇怪。这个视图控制器肯定发生了很多事情。
其他细节:
视图控制器在 Storyboard 中定义。 在运行时添加的 UIView 子视图具有我以编程方式加载的 XIB。【问题讨论】:
您尝试访问IBOutlet
的属性是否已注释,它们是否已连接到 xib 中?
您尝试通过什么方法访问它们?
【参考方案1】:
我发现了问题所在...我无意中将 另一个 子视图实例化为 initWithFrame 中的子视图(不要问我为什么要这样做...我想我在印象是我需要这样做以在那时实例化 XIB),因此嵌套子视图上的属性是有效的,但***视图(包含在 Scroll View 2 中的那个)的属性都是 nil。
我与新西兰的一位开发人员进行了 5 分钟的交谈,他问我在那里做什么,很明显我需要做的是在视图控制器中实例化视图及其 NIB:
ProfileEditView *view = [[[NSBundle mainBundle] loadNibNamed:@"ProfileEditView" owner:nil options:nil] objectAtIndex:0];
...而不是用 initWithFrame 实例化它。
感谢您的帮助!
【讨论】:
以上是关于UITextView 和 UILabel 子视图属性为零的主要内容,如果未能解决你的问题,请参考以下文章
如何在滚动视图中使 UIImage 低于 UILabel 或 UITextView
使用 NSLayoutConstraints 在 UITextView 中将 UILabel 居中