.Hi,
我有一个nib文件,其中包含将在我的大多数视图中使用的标头,因此我可以在需要时只更改一次布局。我想知道是否可以使用界面构建器添加标头笔尖视图,或者是否需要以编程方式执行此操作以及如何完成。
我考虑过将子视图的子类设置为自动加载nib文件的UIView子类。
- (id)initWithFrame:(CGRect)frame {
UIView *cell;
NSArray *nib = [[NSBundle mainBundle] loadNibNamed: @"MainHeaderView"
owner: self
options: nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass: [UIView class]])
cell = (UIView *) oneObject;
if ((self = [super initWithFrame: [cell frame]])) {
// Initialization code
}
return self;
}
但这似乎也不起作用。
答案 0 :(得分:0)
它应该起作用,至少在理论上是这样。就此而言,很久以前,应该可以(但需要付出相当多的努力)通过IB添加它,从以前称为调色板;我相信这个选项已经重新创建了。
我想说从initWithFrame:
加载可能不起作用。其他可能加载的地方是awakeFromNib
(关于多个笔尖加载的警告,导致它被多次调用)或viewDidLoad
。尝试将加载移至viewDidLoad
,看看您的cell
是否已连接。您还应测试是否未能加载笔尖(nil
返回)。
答案 1 :(得分:0)
好的,我已经用另一种方式解决了这个问题。
我已经为所有需要显示标题的视图创建了headerView和控制器,以及UIViewController的子类,并使用标头加载它们。像这样:
@implementation MyDefaultViewController
- (void)viewDidLoad {
[super viewDidLoad];
MyTestAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[self.view addSubview: [appDelegate.headerViewController view]];
}
每个需要标题的视图都会有一个控制器,它是MyDefaultViewController的子类。似乎工作,虽然我没有指定放置标题的位置让我有点害怕xD