Swift UI — HostingController добавляет нежелательную панель навигацииIOS

Программируем под IOS
Ответить
Anonymous
 Swift UI — HostingController добавляет нежелательную панель навигации

Сообщение Anonymous »

Я пытаюсь интегрировать SwiftUI в свой проект и в настоящее время использую раскадровку, которая запускается через делегат моего приложения со следующим кодом:

Код: Выделить всё

_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.
Мой класс BasicInformation выглядит так:
Мой класс BasicInformation выглядит так:
р>

Код: Выделить всё

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 для основной информации выглядит следующим образом:

Код: Выделить всё

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()
}
}

Моя единственная проблема: я не могу понять, почему у меня есть панель навигации в верхней части пользовательского интерфейса моего приложения.
< img alt="Нежелательная панель навигации" src="https://i.sstatic.net/vFV2k.png" />
Надеюсь, кто-нибудь сможет объяснить мне, почему именно существует навигация в верхней части моего события контроллера, хотя я явно установил для Navigationbarhidden значение true в нескольких местах моего приложения

Подробнее здесь: https://stackoverflow.com/questions/636 ... gation-bar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»