小编Kon*_*ann的帖子

SwiftUI:ObservableObject 不会在重绘时保持其状态

问题

为了实现应用程序代码的简洁外观,我为每个包含逻辑的视图创建了 ViewModel。

一个普通的 ViewModel 看起来有点像这样:

class SomeViewModel: ObservableObject {

    @Published var state = 1

    // Logic and calls of Business Logic goes here
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用:

struct SomeView: View {

    @ObservedObject var viewModel = SomeViewModel()

    var body: some View {
        // Code to read and write the State goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

当视图父级未更新时,这可以正常工作。如果父级的状态发生变化,这个视图会被重绘(在声明性框架中很正常)。但是ViewModel 也会被重新创建,并且之后不会保存状态。与其他框架(例如:Flutter)相比,这是不寻常的。

在我看来,ViewModel 应该保留,或者 State 应该保留。

如果我用一个@State属性替换 ViewModel并int直接使用(在本例中)它会保持持久化并且不会重新创建

struct SomeView: View {

    @State var state = 1

    var body: some …
Run Code Online (Sandbox Code Playgroud)

declarative swift swiftui property-wrapper

16
推荐指数
2
解决办法
3131
查看次数

原生iOS国家选择器

我正在开发一个带有自定义注册流程的应用程序,用户应该设置他的国籍或他的国家.

我的问题是,如果可以通过本机ViewController获取此信息,例如ABPeoplePickerNavigationController联系人.

应该是这样的(iPhone 6,iOS 8.x,联系人App'选择国家'):

在此输入图像描述

谢谢

iphone xcode objective-c ios swift

11
推荐指数
2
解决办法
8180
查看次数