まだまだobjective-cのプロダクトってありますよね
でも新しい画面はSwiftUIで作りたい・・・
プレビュー表示が便利・・・
ということでobjective-cで作られたUIViewControllerからSwiftUIの画面をpresentで呼び出して表示するtipsです
objective-cを書いてるような人なら細かい説明しなくてもわかると思うので、
いきなりコード例出します
まずSwiftUIで画面を作ります
SubsctiptionView.swift
import SwiftUI
struct SubscriptionView: View {
var body: some View {
Text("Subscription View")
}
}
次にこの.swiftファイルに以下をつけたします
SubsctiptionView.swift
import SwiftUI
// ↓ここからobjcからswiftUI呼び出すためのクラス
@objc class SubscriptionViewClass: NSObject {
@objc static func createUIViewController() -> UIViewController {
let subscriptionView = SubscriptionView()
let hostingController = UIHostingController(rootView: subscriptionView)
return hostingController
}
}
// ↑ここまで追加
struct SubscriptionView: View {
var body: some View {
Text("Subscription View")
}
}
そしてこの画面を呼び出したいUIViewControllerで以下のようにして使います
MyViewController.m
- (void)subscribeButtonTapped
{
UIViewController *vc = [SubscriptionViewClass createUIViewController];
[self presentViewController:vc animated:YES completion:nil];
}
たったこれだけでSwiftUIの画面を同居できます!
ぜひお試しください