Ios Swift UI-HostingController添加不需要的导航栏

Ios Swift UI-HostingController添加不需要的导航栏,ios,swift,swiftui,Ios,Swift,Swiftui,我正在尝试将SwiftUI集成到我的项目中,目前我正在使用一个故事板,该故事板通过我的app delegate启动,代码如下: _rootNavigiationController = [[UINavigationController alloc] init]; _rootNavigiationController.navigationBarHidden = YES; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:St

我正在尝试将SwiftUI集成到我的项目中,目前我正在使用一个故事板,该故事板通过我的app delegate启动,代码如下:


_rootNavigiationController = [[UINavigationController alloc] init];
_rootNavigiationController.navigationBarHidden = YES;

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:StoryboardLoginRegister bundle:nil];
BasicInformation *basicInfo = (BasicInformation *)[storyboard instantiateViewControllerWithIdentifier:@"basic-info"];
[self.rootNavigiationController setViewControllers:@[basicInfo]];
因此,本质上我的应用程序委托在objective-c中,windows根控制器是一个UINavigation控制器

我的基本信息类看起来像:

class BasicInfo: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.isNavigationBarHidden = true;
        // Do any additional setup after loading the view.
    }
    
    @IBSegueAction func addSwiftUi(_ coder: NSCoder) -> UIViewController? {
        let BasicInfoUI = BasicInfo_UI();
        let hostingController = UIHostingController(coder: coder, rootView: BasicInfoUI);
        hostingController?.navigationController?.isNavigationBarHidden = true;
        return hostingController;
    }
    
    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}
基本信息的Swift UI如下所示:

struct BasicInfo_UI: View {
    @State var username: String = ""
    @State var isPrivate: Bool = true
    @State var notificationsEnabled: Bool = false
    @State private var previewIndex = 0
    var previewOptions = ["Always", "When Unlocked", "Never"]

    var body: some View {
        Form {
            Section(header: Text("PROFILE")) {
                TextField("Username", text: $username)
                Toggle(isOn: $isPrivate) {
                    Text("Private Account")
                }
            }
            
            Section(header: Text("NOTIFICATIONS")) {
                Toggle(isOn: $notificationsEnabled) {
                    Text("Enabled")
                }
                Picker(selection: $previewIndex, label: Text("Show Previews")) {
                    ForEach(0 ..< previewOptions.count) {
                        Text(self.previewOptions[$0])
                    }
                }
            }
            
            Section(header: Text("ABOUT")) {
                HStack {
                    Text("Version")
                    Spacer()
                    Text("2.2.1")
                }
            }
            
            Section {
                Button(action: {
                    print("Perform an action here...")
                }) {
                    Text("Reset All Settings")
                }
            }
        }
    }
}

struct BasicInfo_UI_Previews: PreviewProvider {
    static var previews: some View {
        BasicInfo_UI()
    }
}

struct BasicInfo\u UI:View{
@状态变量username:String=“”
@状态变量isPrivate:Bool=true
@状态变量notificationsEnabled:Bool=false
@国家私有var previewIndex=0
变量previewOptions=[“始终”、“解锁时”、“从不”]
var body:一些观点{
形式{
节(标题:文本(“概要”)){
文本字段(“用户名”,文本:$Username)
切换(isOn:$isPrivate){
文本(“私人账户”)
}
}
章节(标题:文本(“通知”)){
切换(isOn:$notificationsEnabled){
文本(“已启用”)
}
选择器(选择:$previewIndex,标签:文本(“显示预览”)){
ForEach(0..
我唯一的问题是,我似乎不明白为什么我的应用程序的UI顶部有一个导航栏


希望有人能向我解释为什么在我的控制器事件的顶部有一个导航栏,尽管我在我的应用程序的多个地方都显式地将navigationbarhidden设置为true

Form {

  // ... other code

}
.navigationBarTitle("")
.navigationBarHidden(true)