Dear ALL:
在一张大图里,我塞入很多元件
其中一个是 MyView, 继承自 UIView
我知道可以在 IBuilder 环境填入 class name
于是执行时 MyView 的
- (id)initWithCoder:(NSCoder *)aDecoder
就被呼叫了
'如果'我在这里面填入 (我强调了如果,表示我知道这样做有问题;不是不知道)
[[NSBundle mainBundle]loadNibNamed:@"MyView" owner:self options:nil][0];
那么在加载时会递回个不停;原来 loadNib 本身,内部又会去启动 initWithCoder!!
我的解决方法是,在大图的 .m 档 (或说在 controller 档)
那边只关联一个 UIView, 而不是关联 MyView
然后利用这个 UIView 提供的座标去手动加载它
View = [[MyView alloc] initWithFrame:UIViewFrame.bounds];
这时因为我是用 initWithFrame 来初始 MyView 的
所以在其内摆入 loadNib 相关程式码
执行至此时, loadNib 依然内部会叫用 initWithCoder
但现在没关系了,不会递回叫用了,因为 initWithCoder 里,我不安排 loadNib 了
程式是写出来了,只是觉得要绕一大圈
为什么我不能在 IBuilder 环境直接填 class name
而且要利用一个 View 当做 Frame 去占位置呢?
有没有更直接的写法
谢谢