如何用xib自定義一個view, 在StoryBoard裡用

方健發表於2014-09-13

參考:
http://stackoverflow.com/questions/14450426/ios-creating-a-reusable-view-woes
http://onedayitwillmake.com/blog/2013/07/ios-creating-reusable-uiviews-with-storyboard/

其他複雜的:
http://cocoanuts.mobi/2014/03/26/reusable/
http://blog.yangmeyer.de/blog/2012/07/09/an-update-on-nested-nib-loading
例子:
https://github.com/yangmeyer/YMCalendarSheet

簡述:
1. 建一個 UIView的子類(MyView.h/MyView.m)
2. 建一個 View型別的XIB
3. 把xib的file‘s owner設為MyView
4. 在.h檔案里加上
@property (nonatomic, retain) IBOutlet UIView *contentView;

5.繫結xib裡的根view到.h裡的 contentView
6.在.m里加上

- (void)awakeFromNib
{
    NSLog(@"awake from nib");
    [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
    [self addSubview:self.contentView];
}
  1. ok了。storyboard裡用的時候把UIView的類名改為MyView就可以。xib和.h可以互相繫結子outlet什麼的。
  2. 我的例程:
    https://bitbucket.org/fangj/reusexibviewinstoryboardexample

相關文章