1. Qiita
  2. Items
  3. Objective-C

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

  • 56
    Stock
  • 0
    Comment
Stocked
  • itoz
  • kouchi67
  • siquare
  • kasumani
  • toshinarin
  • hryoichi
  • PGMY
  • torufuruya@github
  • eggmobile
  • abechangyu

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];
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.