多个xib文件的子视图

时间:2012-12-27 20:16:14

标签: xcode

我有一个项目要求在每个xib文件上放置一个自定义菜单屏幕。我知道我可以通过创建视图并将其添加为子视图来实现此目的。

我想在1个文件中创建该视图,然后在我需要的地方调用它,只是不知道如何实现它。

请帮忙吗?...

1 个答案:

答案 0 :(得分:1)

以下是我正是这样做的一个例子。

Creating Loadable Views

我这样做是为了创建自定义的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 
相关问题