我有一个 swift UIHostingController,它呈现 SwiftUI。我在视图中调用了一个函数,它确实出现了,它构建得很好,但没有创建预期的输出。
class LoginView: UIHostingController<LoginViewComponent> {
required init?(coder: NSCoder) {
super.init(coder: coder, rootView: LoginViewComponent())
}
override func viewDidAppear(_ animated: Bool) {
sessionHandler()
}
func sessionHandler(){
let user = User()
if user.isLoggedIn(){
view.isUserInteractionEnabled = false
print("Authenticating Session")
self.rootView.loginState(state: "success")
}else{
view.isUserInteractionEnabled = true
print("Needs Logging in")
}
}
}
Run Code Online (Sandbox Code Playgroud)
函数 ("loginState(state: "success")") 在 SwiftUI 视图类中调用时有效,但是当从托管控制器调用时它不起作用。
任何帮助将不胜感激。
我正在尝试使用 Swift UI 在 Swift 中创建一个选项卡式应用程序。我正在使用 @ObservedObject 来存储应呈现的当前视图名称。
我试图更改 UI 选项卡栏的背景颜色,但是每次我添加 init 来覆盖该方法时,都会开始抛出错误,例如“传递给不带参数的调用的参数”。
我在下面附上了控制器代码的片段。非常感谢任何解决此问题的帮助。
import SwiftUI
struct ContentView: View {
@State private var selection = 0
@ObservedObject var coreRouter: CoreRouter
init() {
UITabBar.appearance().backgroundColor = UIColor.blue
}
var body: some View {
TabView(selection: $selection){
Text("First Screen")
.font(.title)
.tabItem {
VStack {
Image(systemName: "house")
Text("Home")
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image("calendar")
Text("New Items")
}
}
.tag(1)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some …Run Code Online (Sandbox Code Playgroud)