如何从 UIView 加载 UILabel?
Posted
技术标签:
【中文标题】如何从 UIView 加载 UILabel?【英文标题】:How to load UILabel from UIView? 【发布时间】:2014-03-20 10:21:03 【问题描述】:我对 UILabel 和 UIView 有疑问。在我的 UIViewController 中,我加载了一个 UIView:
NSArray *first = [[NSBundle mainBundle] loadNibNamed:@"customView" owner:self options:nil];
UIView *detail = [first objectAtIndex:0];
在我已经加载的 UIView (@"customView") 的 Xib 中,有一个 UILabel。我怎样才能加载这个 UILabel 并更改文本?
谢谢
【问题讨论】:
你想在你的控制器中加载你的自定义 uilabel 类吗? @RahulMathur 我想在我加载的 UIView 中加载标签 (@"customView") 【参考方案1】:如果在 XIB 中根视图有一个子视图,那么当您加载 XIB 时也会加载该子视图。您有几种连接方式:
-
为 XIB 中的文件所有者添加一个 outlet(这是您的视图控制器)
向根视图添加一个出口,视图控制器可以使用它来获取标签
使用标签上的
tag
和viewWithTag:
进行搜索
可以说选项 2 是该列表中最好的,因为它包含最好的知识和最可重用。
【讨论】:
我加载的视图 (@"customView") 不是故事板的子视图,位于不同的 xib 中。我想加载不在 UIViewController 内但在不同的 xib 中的 xib 的标签。 您正在从 XIB 加载它,我明白了。那么 XIB 中的根视图是什么?UIView
还是 UILabel
?您的问题不再清楚...
根是 UIView,里面有一些标签。我需要访问所有标签。
所以我不明白我的答案不清楚怎么办?有 3 种针对该问题的解决方案...
谢谢!!我解决了!!我没有连接文件的所有者【参考方案2】:
您可以在 .xib 文件中标记 UILabel,然后像这样访问UILabel
:
(假设您已标记UILabel
42)
UILabel *label = [detail viewWithTag:42];
然后,您可以像使用任何其他 UILabel
一样更改文本:
label.text = @"Text for the label";
【讨论】:
【参考方案3】:在 XIB 文件中,您可以为文件所有者创建一个出口。然后您可以访问视图控制器的属性,因为它是 XIB 文件的所有者(在您的第一行代码中设置)。
【讨论】:
我加载的视图 (@"customView") 不是故事板的子视图,位于不同的 xib 中。我想加载不在 UIViewController 内但在不同的 xib 中的 xib 的标签。以上是关于如何从 UIView 加载 UILabel?的主要内容,如果未能解决你的问题,请参考以下文章