我有一个项目要求在每个xib文件上放置一个自定义菜单屏幕。我知道我可以通过创建视图并将其添加为子视图来实现此目的。
我想在1个文件中创建该视图,然后在我需要的地方调用它,只是不知道如何实现它。
请帮忙吗?...
答案 0 :(得分:1)
以下是我正是这样做的一个例子。
我这样做是为了创建自定义的tableview单元格,但这可以用任何类型的类来完成。
关键是项目在“界面”构建器中设置了自定义类。
======更新======
我没有想到的另一件事是。您可能希望创建特定类型的视图,并将该视图放入每个XIB文件中。
如果是这样的话。然后你可以创建一个New类,它是UIView的子类
然后你只需要在你的xib中添加一个UIView(没有任何内容),并在身份浏览器中设置它的“Custom Class”值。这将告诉Objective C这个UIView实际上是“自定义类”类型。它将Alloc初始化您的自定义类并将其放在那里。在这种情况下,您可以使用代码构建菜单或其他任何内容,它将被放入您之前插入的空白UIView实际所在的类中。
我最常见的情况
是使用连接到插座的“Container”UIView,然后使用与上面链接的nibLoader方法将视图拉出创建它的nib,然后将该对象添加为子视图容器
@interface HomeViewController ()
@property (nonatomic, strong) MyCustomView *customView;
@end
@implementation HomeViewController
@synthesize customViewContainer = _customViewContainer; // IBOutlet from header
@synthesize customView = _customView;
- (MyCustomView*) customView{
if (_customView == nil){ // Lazy Load
// Load From Nib Loader linked to above
}
return _customView;
}
- (void) viewDidAppearAnimated:(BOOL) animated {
this.customView.frame = this.customViewContainer.bounds;
[this.customViewContainer addSubView:this.customView];
}
@end