2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

objective-c製のUIViewControllerからSwiftUIで作った画面を呼び出したいときにすること

Posted at

まだまだ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の画面を同居できます!

ぜひお試しください

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?