将子视图添加到 xib 文件
Posted
技术标签:
【中文标题】将子视图添加到 xib 文件【英文标题】:Add subview to a xib file 【发布时间】: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并使用它。 【参考方案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];
它将子视图标签放在视图上。
【讨论】:
以上是关于将子视图添加到 xib 文件的主要内容,如果未能解决你的问题,请参考以下文章
将 xib 文件中的视图添加到 UITableViewCell 添加约束