为了实现应用程序代码的简洁外观,我为每个包含逻辑的视图创建了 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) 我正在开发一个带有自定义注册流程的应用程序,用户应该设置他的国籍或他的国家.
我的问题是,如果可以通过本机ViewController获取此信息,例如ABPeoplePickerNavigationController联系人.
应该是这样的(iPhone 6,iOS 8.x,联系人App'选择国家'):

谢谢