Objective-C
iOS

カスタム UIView を xib から作る方法

More than 3 years have passed since last update.


Interface Builder での実装例

View テンプレートから xib ファイルを新規作成したら、ビューの Custom Class を指定します。File's Owner の方は不要です。

1.png


ビュー上にコントロール類を配置して制御する場合はカスタムビュークラスの IBOutlet/IBAction に接続します。

2.png


コードの実装例

ポイントは UINib です。サブクラスを作って UINib を使ってビューのインスタンスを得ます。

※ xib ≒ nib です。


MyView.h


@interface MyView : UIView

+ (instancetype)myView;

@end



MyView.m


@interface MyView ()

@property (weak, nonatomic) IBOutlet UISwitch *switch;

- (IBAction)buttonAction:(id)sender;

@end

@implementation MyView

- (void)_init
{
// initialize
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self _init];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self _init];
}
return self;
}

- (void)awakeFromNib
{
[super awakeFromNib];

// 初期設定など
}

+ (instancetype)myView
{
// xib ファイルから MyView のインスタンスを得る
UINib *nib = [UINib nibWithNibName:@"MyView" bundle:nil];
MyView *view = [nib instantiateWithOwner:self options:nil][0];
return view;
}

- (IBAction)buttonAction:(id)sender
{
// アクションを実装
}

@end



使い方


MyView *customView = [MyView myView];
[view addSubView:customView];