如何从 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(这是您的视图控制器) 向根视图添加一个出口,视图控制器可以使用它来获取标签 使用标签上的tagviewWithTag: 进行搜索

可以说选项 2 是该列表中最好的,因为它包含最好的知识和最可重用。

【讨论】:

我加载的视图 (@"customView") 不是故事板的子视图,位于不同的 xib 中。我想加载不在 UIViewController 内但在不同的 xib 中的 xib 的标签。 您正在从 XIB 加载它,我明白了。那么 XIB 中的根视图是什么? UIView 还是 UILabel?您的问题不再清楚... 根是 UIView,里面有一些标签。我需要访问所有标签。 所以我不明白我的答案不清楚怎么办?有 3 种针对该问题的解决方案... 谢谢!!我解决了!!我没有连接文件的所有者【参考方案2】:

您可以在 .xib 文件中标记 UILabel,然后像这样访问UILabel

(假设您已标记UILabel42

UILabel *label = [detail viewWithTag:42];

然后,您可以像使用任何其他 UILabel 一样更改文本:

label.text = @"Text for the label";

【讨论】:

【参考方案3】:

在 XIB 文件中,您可以为文件所有者创建一个出口。然后您可以访问视图控制器的属性,因为它是 XIB 文件的所有者(在您的第一行代码中设置)。

【讨论】:

我加载的视图 (@"customView") 不是故事板的子视图,位于不同的 xib 中。我想加载不在 UIViewController 内但在不同的 xib 中的 xib 的标签。

以上是关于如何从 UIView 加载 UILabel?的主要内容,如果未能解决你的问题,请参考以下文章

从笔尖加载的 UIView 未显示多个 UILabel

swift - 在UIScrollView上从xib添加UIView后如何更新约束?

旋转 UIL 标签辊

从 xib 加载子类时如何设置子类 UIView 属性的值

从主队列的回调中更新 UIView 上的 UILabel

iOS:从笔尖加载自定义 UIView