小编Mac*_*yne的帖子

使用 MapKit 和 SwiftUI、Xcode 12 在默认 iOS 地图上移动视图时,如何修复“不可见矩形需要样式 Z”的终端输出

使用 MapKit 和 SwiftUI(版本 12.0 beta 2 (12A6163b))放大/缩小地图时,终端会生成数百条这样的行:

2020-07-21 21:05:39.310719-0500 MyApp[95733:4195994] [VKDefault] 不可见矩形请求样式 Z

import SwiftUI
import MapKit

@main
struct MapTest: App {
    var body: some Scene {
        WindowGroup {
            MapView()
        }
    }
}

struct MapView: View {
    var body: some View {
        Map()
    }
}

struct MapView_Previews: PreviewProvider {
    static var previews: some View {
        MapView()
    }
}

struct Map: UIViewRepresentable {
    func makeUIView(context: Context) -> MKMapView {
        
        let map = MKMapView()
        map.delegate = context.coordinator
        return map
    }
    
    func …
Run Code Online (Sandbox Code Playgroud)

mapkit ios swift swiftui xcode12

22
推荐指数
1
解决办法
3729
查看次数

了解警告:此类“SwiftUI.AccessibilityNode”不是已知的可序列化元素

我整理了一个简单的项目来构建在 swift 中使用类和结构的理解。在模拟器上运行此代码时,我收到以下警告:

内容视图.swift

import SwiftUI

struct ContentView: View {
    @EnvironmentObject var app: App

    var body: some View {
        VStack{
            ForEach(app.users.names, id: \.self) { name in
                Text("\(name)")
            }
            Spacer()
            Button(action: {self.app.users.add()}) {
                Text("add")
            }
        }
    }
}

class App: ObservableObject {
    @Published var users = Users()
}

struct Users {
    var names = ["Mac", "Alex", "Kevin"]

    mutating func add() {
        names.append("NEW GUY")
    }
}
Run Code Online (Sandbox Code Playgroud)

SceneDelegate.swift

var app = App()
let contentView = ContentView().environmentObject(app)
Run Code Online (Sandbox Code Playgroud)

输出:

2019-10-23 14:55:51.207032-0500 ExtendedClassDemo[43035:1908988] [AXRuntimeCommon] 类 'SwiftUI.AccessibilityNode' …

xcode ios-simulator swift swiftui

9
推荐指数
0
解决办法
1043
查看次数

为什么当放在 swiftUI 中的 NavigationView 内的元素上时 onAppear() 执行两次?(Xcode 12.0)

FirstView Appeared打印两次。首次加载视图时一次,选择 NavigationLink 时再次加载。

import SwiftUI

struct FirstView: View {
    
    var body: some View {
        NavigationView{
            ZStack{
                Text("FirstView").onAppear(perform: {print("FirstView Appeared")})
                
                NavigationLink(destination: SecondView()) {
                    Text("Goto SecondView")
                }.offset(y: 50)
            }
        }
    }
}

struct SecondView: View {
    
    var body: some View {

        Text("SecondView").onAppear(perform: {print("SecondView Appeared")})
    }
}
Run Code Online (Sandbox Code Playgroud)

在模拟器和个人设备上运行上面的代码在Xcode 12.0 beta中,在选择NavigationLink时,在下面的Xcode 12.0 Beta中会产生下面的输出:

FirstView Appeared
FirstView Appeared
SecondView Appeared
Run Code Online (Sandbox Code Playgroud)

这是 onAppear() 预期行为的重复吗?

如果是这样,有什么最佳实践可以在firstview创建时加载一些数据,然后返回到firstview(因为 onAppear() 会在导航离开时尝试加载一些数据firstView)

navigation swiftui swiftui-navigationlink xcode12

6
推荐指数
1
解决办法
814
查看次数