Ios Swift UI-HostingController添加不需要的导航栏
我正在尝试将SwiftUI集成到我的项目中,目前我正在使用一个故事板,该故事板通过我的app delegate启动,代码如下: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
_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)