Skip to main content

iOSでxibをカスタムビューとして読み込んでプロパティにセットする

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB DB PRESS plus


Viewはxibでカスタムビューになるように定義して
これをイニシャライズのタイミングでプロパティに代入したいことがあると思う

そのやり方


・Objective-c

# hogeViewはヘッダに定義されてる

- (id)initWithViewController:(UIViewController *)controller{
    self = [super init];  

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"HogeView" owner:self options:nil];
    hogeView = (HogeView*)[nib objectAtIndex:0]; //プロパティ

    return self;
}

・Swift

var hogeView: HogeView!

@objc(initWithController:)
init(viewController: UIViewController) {
    super.init()

    hogeView = Bundle.main.loadNibNamed("HogeView", owner: self, options: nil)?.first as? HogeView
}

swiftでHogeView!はkotlinのlateinitらしい
https://qiita.com/alt_yamamoto/items/d545309093baa53a539e

owner: selfは、initの後
var hogeViewはinitの前
としなければならないのでswift化したタイミングでハマりましたがlateinitできたので一安心です。
Swift良いですね

少し続くよ

関連記事:

Pocket