【发布时间】:2016-06-09 00:27:23
【问题描述】:
我最近参与了一个项目,高级工程师创建了一个自定义标签栏。他完全去掉了传统的标签栏,取而代之的是自己的。查看代码,我可以看到他创建了文件 HOFooterBar.h、HOFooterBar.m 和 HOFooterBar.xib。在 .xib 文件中,他画出了在界面生成器中的页脚应该是什么样子。他继承了 UIView 类。在 .h 文件中,他为该类创建了一个协议,以便可以从视图中给出的操作中获取命令。在主视图控制器上,他只是在它所属的位置添加了一个 UIView,并在身份检查器中将类更改为 HOFooterBar。
这是我可以看到的,但我试图在我自己的代码中重现结果,但它不起作用。我添加到我的视图控制器的 UIView 只是显示为白色。有一次,我手动将 UIView 添加到我的代码中(没有 IB)并且它起作用了。但我需要能够从界面生成器中添加它。任何想法如何实现这一点,为什么它对我不起作用?如果我不够清楚,我愿意接受更多问题
【问题讨论】:
-
你这样做了吗[self.view addSubview:yourButton]; ?
-
不,我希望从界面生成器中完成所有工作。我没想到必须以编程方式将其添加到子视图中。通常,在 IB 中,如果您从代码中添加按钮,则不必执行该行。如果我这样做,它会起作用。但我想更改身份检查器中的视图并在之后显示
-
您是从笔尖加载视图吗?我会做类似
yourTabBar = [[[NSBundle mainBundle] loadNibNamed:@"YourTabBar" owner:self options:nil] objectAtIndex:0];然后self.view addSubview:yourTabBar] -
如果我这样做,它会起作用。但我希望能够更改身份检查器中的 uiview 并让它加载而不是像那样以编程方式加载它
标签: ios objective-c uiview interface-builder