我正在开发一个iOS应用程序,使用swiftUI和组合框架以及MVVM。我希望在一个名为LoginService的单独类中处理登录API请求,这个类在LoginViewModel中使用。现在,我想知道应该如何发布和观察视图和ViewModel之间的属性。我的意思是,ViewModel是一个ObservableObject,并且在视图中被观察到,但是由于我在处理服务类中的网络请求,LoginService应该如何通知LoginViewModel和LoginView数据已经接收并且视图应该被更新?
import Foundation
import Combine
class LoginViewM
我有一个定义如下的Subtask:
struct Subtask: Identifiable{
var id = UUID().uuidString
var text = ""
}
我在这样的ObservableObject中填充了它们的数组:
//View Model
class SubtaskModel: ObservableObject {
static let shared = SubtaskModel()
@Published var subtasks = [Subtask]()
init(){
//Code that create
我知道在哪种情况下使用@Binding和@Published
就像在ObservableObject中一样,我通常使用@已发布的或objectWillChange.send()
和子视图中的@Binding将更改传播到父视图。
但是这里有一个片段,它似乎在使用ObservableObject中的@Binding和@Published。
我想区别是什么。
@Binding var input: T
@Binding var validation: Validation
@Published var value: T {
didSet {
self.input = sel
我有一个SwiftUI视图,它接受一个名为appModel的EnvironmentObject。然后,它在其appModel.submodel.count方法中读取值body。我希望这会将我的视图绑定到属性count on submodel,以便在属性更新时重新呈现,但这似乎不会发生。
这是个虫子吗?如果不是,在SwiftUI中将视图绑定到环境对象的嵌套属性的惯用方法是什么?
具体来说,我的模特看起来是这样..。
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: Observable
当我从API中获取远程数据时,我用SwiftUI构建了一个SwiftUI,用于在应用程序中显示一些加载内容。我在Xcode版本11.0beta 5上。
这是LoadingView
struct LoadingView<Content>: View where Content: View {
@Binding var isShowing: Bool
var content: () -> Content
var body: some View {
GeometryReader { geometry in
ZS
我有2种观点认为
第一视图将该视图中的项和选定项列表传递给第二视图,第二视图在用户更改时返回更新的选定项。
当我发送模型属性'idx‘时,我得到了错误’类型表达式是不明确的,没有更多的上下文‘。
//I cant make any changes to this model so cant confirm it with ObservableObject or put a bool property like 'isSelected'
class Model {
var idx: String?
....
}
class FirstViewModel: Obs
下面的ReadyDashboardView中的背景色和文本在isConnected更新时不会更新。显然,我希望在建立连接时更新视图。我原以为,将链中的所有内容发布到该变量中,将使其能够在迅捷中立即更新。相反,它总是使用实例化变量时提供的值来呈现。以下是一个非常简单的情况:
还有另一个我应该使用的迅捷功能吗?还是我要对我的代码库做一些全面的修改?
import SwiftUI
@main
struct TestApp: App {
@StateObject private var env = PrinterEnv()
var body: some Scene {
我有一个模型类型,看起来如下:
enum State {
case loading
case loaded([String])
case failed(Error)
var strings: [String]? {
switch self {
case .loaded(let strings): return strings
default: return nil
}
}
}
class MyApi: ObservableObject {
private(set) var sta
我试图用SwiftUI和绑定更新视图。我有一个MainView,它可以观察ViewModel的变化。我希望这个观点能对viewModel.data.image.的变化作出反应。我不知道如何将一个值传递给HeaderView。
目前,此代码拒绝编译。我收到一个错误:
Value of type 'ObservedObject <LockedCourseViewModel> .Wrapper' has no dynamic member 'course' using key path from root type
查看:
struct MainView:
我看不到ContentView页面上文本对象中的变化。但是,当我在.onReceive中使用print运行相同的代码时,我可以看到更改。这里有什么问题?
我想从不同的地方管理游戏的状态,从不同的地方管理游戏的运作。我搞错了逻辑吗?
Enum
enum GameSituation {
case play
}
对策Config
class GameConfig: ObservableObject {
@Published var randomCellValue: Int = 0
@Published var timer = Timer.publish(every: 2, o
最近,我在SwiftUI和ObservedObject/ObservableObject中遇到了以下问题
如果ObservedObject/ObservableObject正在视图中发布,则将重新计算body属性--正如预期的那样。
但是,如果body属性中有一个子视图(它也有一个ObservedObject ),那么非常奇怪的是,视图不仅重新计算了子视图的body属性,而且还重新计算了整个object。
of ObservedObject 是 of lost of the sub。
当然,您可以通过通过ObservableObject将ObservableObject添加到子视图中来防止这
我有一个视图,它从前面的视图接收ID值。我还需要接受这个ID值并将它传递到一个ObservableObject中,这样我就可以对该ID运行一个Firestore查询,我不知道如何获取ObservableObject的ID。
struct ItemView: View {
var itemName: String
var itemID: String
@ObservedObject var items = getItemsData()
// ..... etc
}
class getItemsData() {
@Published var data =
我用SwiftUI开发了一个iOS应用程序,现在需要把它移植到安卓系统上,于是我决定尝试一下Flutter。在克服了超级冗长和/或丑陋的嵌套小部件之后,我陷入了状态管理。在SwiftUI中:
class MySharedObj : ObservableObject {
@Published var someVar = 0
}
现在,我可以简单地在任何视图中删除"@ObservedObject var obj:MySharedObj“,只要someVar在任何地方发生更改,所有”观察“这个对象的视图都会自动更新。在Flutter中有没有等同的东西?目前我手动管理"listen
下面是一个简单的基于MVVM的TestView:
import SwiftUI
public struct Test: View {
@ObservedObject public var viewModel = TestViewModel()
public init() {
}
public var body: some View {
VStack {
Text(viewModel.model.stri)
Button(action: {
我正试图将从Firebase检索到的值数组传递到视图中。但是,当数组中应该有值时,传入视图的数组是空的。
这就是我创造的模型。eventLocations是我想要传递到视图中的属性。
class FoodEventViewModel: ObservableObject {
@Published var foodEvents = [FoodEvent]()
@Published var eventLocations = [CLLocationCoordinate2D]()
private var db = Firestore.firestore()
var events = [F
我正在将一个消防站数据库连接到我的UI。
我已经创建了一个SignedInAuthentication对象,我将其设置为一个环境对象
class SignedInAuthentication: ObservableObject {
@Published var user: User
@Published var workoutCompletionStore: WorkoutCompletionDataStoreProtocol
init(user: User, workoutCompletionStore: WorkoutCompletionDataStoreProt