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良いですね
少し続くよ
関連記事:
- DaggerのAndroid Supportを使ってみた
- SwiftUIをViewControllerに入れてみた
- iOS 15 Programming Fundamentals with Swiftの7章と8章を読んだので不明点をまとめる