【问题标题】:Add subview to a xib file将子视图添加到 xib 文件
【发布时间】:2015-02-03 01:40:40
【问题描述】:

我正在尝试向 xib 文件中的 UIView 添加标签。当我运行应用程序时,标签不显示。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 200)];
    [self.label setText:@"This is a label"];

    xibView *myxibView = [[xibView alloc] init];
    [myxibView.myView addSubview:self.label];
}

【问题讨论】:

  • 您创建了一个 xibView 的本地实例,您没有将它添加到任何地方并且没有显示该视图。那么你怎么能期望它显示标签呢?
  • xib 是自定义单元格。我正在尝试以编程方式添加标签
  • 一个简单的例子:你把面包(xibView)放在你家(Storyboard)上。现在你在你的办公室(viewDidLoad),你买了一个新面包(创建了一个新的xibView实例)并在上面放了蜂蜜(标签)。现在你说你留在家里的面包上看不到蜂蜜。希望你能理解。
  • 那我该如何改变呢?
  • 将一个outlet连接到storyboard中已有的xibView并使用它。

标签: ios objective-c xib


【解决方案1】:

1.如果你的控制器和你的xib同名, 例如,XibViewController.m & XibViewController.xib。 默认情况下,您的控制器会将其视图设置为 XibViewController.xib 的实例。

在这种情况下,您只需将标签添加到 self.view

[self.view addSubview:self.label];

2.如果要将 XibViewController.xib 加载到不同名称的控制器,如 View2Controller.m,则需要按名称加载 xib 并将 xib 视图添加到 View2Controller 的视图中。

UIView *myxibView = [[[NSBundle mainBundle] loadNibNamed:@"XibViewController" owner:self options:nil] objectAtIndex:0];
[myxibView addSubview:self.label];
[self.view addSubview:myxibView];

【讨论】:

  • 我认为这个答案是不言自明的,必须接受
【解决方案2】:
xibView *myxibView = [[xibView alloc] init];
[myxibView.myView addSubview:self.label];

您没有将 myxibView 添加到实际视图中。它只是一个例子。你为什么不这样做:

 [self.view addSubview:self.label];

希望这会有所帮助.. :)

【讨论】:

  • xib 有一个名为 myView 的视图,我将它放在 storyBoard 中。而 xib 是一个自定义单元格。我正在尝试以编程方式添加标签
【解决方案3】:

只需添加,

self.label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 200)];
[self.label setText:@"This is a label"];
[self.view addSubview:self.label];

它将子视图标签放在视图上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2012-04-23
    • 2020-02-04
    • 1970-01-01
    • 2015-05-23
    • 2014-07-31
    • 1970-01-01
    相关资源
    最近更新 更多