【问题标题】:Objective C to SwiftUI Hide Navigation BarObjective C 到 SwiftUI 隐藏导航栏
【发布时间】:2021-06-29 01:59:44
【问题描述】:

我有一个可以导航到 SwiftUI 布局的 Objective C 应用程序。 当它这样做时,屏幕顶部有一个空白区域,我认为它是一个导航栏。原始的 Objective C 布局没有导航栏。

在下面的代码中,我应该在哪里移除导航栏?

这就是我从 Objective C 打开 SwiftUI 布局的方式:

@property SwuiftUIInterface *goldieInterface;
@property UIViewController *swiftViewController;
- (void)viewDidLoad {
 self.goldieInterface = [[SwuiftUIInterface alloc] init];
 self.swiftViewController = [[UIViewController alloc] init];
    
 self.swiftViewController = [self.goldieInterface makeSwiftUI:macAddresses];

 [self.navigationController setViewControllers:@[self.swiftViewController] animated:YES];
}

这是 SwiftUIInterface 函数 makeSwiftUI:

@objc class SwuiftUIInterface: NSObject {

@objc func makeSwiftUI(_ macAddr:String) ->
UIViewController{

    var details = SwiftUIView(runTimer: true)
    
    return UIHostingController(rootView: details)
}}

这是我的 SwiftUIView:

import SwiftUI
import UserNotifications
struct SwiftUIView: View {
var body: some View {
  }
}

【问题讨论】:

    标签: ios objective-c xcode swiftui


    【解决方案1】:

    我发现解决方案是访问 UIHostingController

    为了获得访问权限,我将其添加到 SwiftUIInterface 文件中:

    class YourHostingController <Content>: UIHostingController<AnyView> where Content : View {
    
      public init(shouldShowNavigationBar: Bool, rootView: Content) {
          super.init(rootView: AnyView(rootView.navigationBarHidden(!shouldShowNavigationBar)))
      }
    
      @objc required dynamic init?(coder aDecoder: NSCoder) {
          fatalError("init(coder:) has not been implemented")
      }
    }
    

    然后我像这样更改了 SwiftUIInterface 类

    @objc class SwuiftUIInterface: NSObject {
    
        @objc func makeSwiftUI(_ macAddr:String) ->
        UIViewController{
            print("swift interface Make set ui view controller")            
            let details = SwiftUIView(runTimer: true)
            let sleepFreq: YourHostingController = YourHostingController(shouldShowNavigationBar: false, rootView: details)
            
            return sleepFreq
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 2020-03-20
      • 1970-01-01
      相关资源
      最近更新 更多