SwiftUI 冻结设备

Posted

技术标签:

【中文标题】SwiftUI 冻结设备【英文标题】:SwiftUI Freeze device 【发布时间】:2019-12-03 08:58:28 【问题描述】:

我有一个 ListNavigationLinkNavigationView 和一个 Button 用于显示模式。

当我显示细节时没有问题,但如果我打开模式并显示细节不起作用。 我的设备 (iPhone XS) 因 CPU 100% 而死机。

代码模态:


import SwiftUI
import Combine

struct RoomFormView: View 
    @ObservedObject var viewModel : RoomFormViewModel
    @Binding var show : Bool

    var body: some View 
        NavigationView 
            VStack(alignment: .leading, spacing: 5) 
                Text("Nom de la pièce")
                TextField("Nom", text: self.$viewModel.name) 
                    HelperView.closeKeyboard()
                
                Spacer().frame(width: nil, height: 15, alignment: .center)
                Text("Etage")
                TextField("Etage", text: self.$viewModel.floor) 
                    HelperView.closeKeyboard()
                
                Spacer()
                .padding(22)
            .navigationBarItems(leading: Button(action: 
                self.show = false
            ) 
                Text("Annuler")
            , trailing:                     Button(action: 
                HelperView.closeKeyboard()
                self.viewModel.validate()
                self.show = false
            , label: 
                Text("Valider")
                )).navigationBarTitle("Ajouter une pièce")
        
    


【问题讨论】:

如果您向我们展示 ListRoomViewModel,我们可以尝试重现......所以我们可以猜测...... 我认为问题在于更复杂的视图。当我打开和关闭工作表时,所有列表都会刷新。 你也没有向我们展示 RoomFormView 的代码......所以......你的问题还不够好......也许你应该阅读这个。 ***.com/help/how-to-ask 【参考方案1】:

错误在于.navigationBarTitle("Ajouter une pièce") 应用程序冻结带有重音 éè

当我删除重音时没问题。真正的解决方案是使用Text("Ajouter une pièce")

最终代码:.navigationBarTitle(Text("Ajouter une pièce"))

【讨论】:

以上是关于SwiftUI 冻结设备的主要内容,如果未能解决你的问题,请参考以下文章

删除第一个字符时,SwiftUI TextField 冻结

Xcode 12.3 在 SwiftUI 项目启动时冻结

尝试在同一视图上的文本字段之间移动后,SwiftUI 应用程序在控制台中冻结且没有错误

如何有效地过滤 SwiftUI 中的长列表?

列表内的 SWIftUI anchorPreference

使用 .edgesIgnoringSafeArea() 时,SwiftUI 布局超出设备范围