combine相关内容

SwiftUI @Binding不会刷新视图

我有一个简单的主/明细接口,其中明细视图修改了数组中的项目.使用以下内容,可以正确更新模型,但是SwiftUI不会刷新视图以反映更改. 型号: struct ProduceItem:可识别的{设id = UUID()命名:字符串var库存:Int}最终课程ItemStore:BindableObject {var willChange = PassthroughSubject ..
发布时间:2021-04-23 19:10:54 其他开发

通过@Published var上的didSet将日期/时间保存到UserDefaults(来自SwiftUI的TimePicker组件)

我正在尝试保存用户的Checkin时间首选项(向他们发送通知提醒).到目前为止,我已经能够将Bool和字符串保存到UserDefaults中,但是我无法弄清楚如何保存 time 首选项.这是我的UserSettings类,用于存储首选项. 公共类UserSettings:ObservableObject {@发表的var晚报:Bool {didSet {UserDefaults.standard ..
发布时间:2021-04-23 19:10:50 其他开发

在SwiftUI视图中结合onChange和onAppear事件?

我正在使用 onChange 修饰符在视图上观察属性.但是,我也希望同一段代码也可以在初始值上运行,因为有时数据会注入到初始化程序中,或者稍后异步加载. 例如,我有一个注入模型的视图.有时,此模型中包含数据以开始(例如预览),或者从网络中异步检索. class MyModel:ObservableObject {@已发布的var计数器= 0}struct ContentView:查看{@ ..
发布时间:2021-04-23 19:10:45 移动开发

使用苹果公司的新Combine框架时如何防止强参考周期(.assign引起问题)

我不太了解如何正确地将订阅者存储在类中,以使它们持久化,但又不阻止对象被初始化.这是一个对象不会取消初始化的示例: 导入UIKit进口联合收割机班级考试{公共变量名称:字符串=“"私人var disposeBag:Set= Set()取消初始化{print("deinit")}init(发布者:CurrentValueSubject){P ..
发布时间:2021-04-23 19:10:39 移动开发

如何使用Combine来跟踪UIViewRepresentable类中的UITextField更改?

我创建了一个自定义文本字段,我想利用Combine.为了在文本字段中的文本更改时得到通知,我目前使用自定义修饰符.它运行良好,但我希望此代码可以在CustomTextField结构中使用. 我的CustomTextField结构符合UIViewRepresentable.在此结构内部,有一个名为Coordinator的NSObject类,它符合UITextFieldDelegate. ..
发布时间:2021-04-23 19:10:36 移动开发

SwiftUI如何防止视图重新加载整个身体

基本上,我试图弄清楚何时更新viewModel,它将通知视图并刷新整个正文.如何避免这种情况.例如,如果我的视图GoLiveView已经存在另一个视图BroadcasterView,并且后来更新了我的goLiveViewModel,则GoLiveView将被刷新,并且它将再次创建BroadcasterView,因为showBroadcasterView = true.因此,它将导致很多问题. ..
发布时间:2021-04-23 19:10:33 移动开发

如何使用@Published属性包装器定义协议以包含属性

使用遵循当前SwiftUI语法的@Published属性包装器时,很难定义一个包含带有@Published属性的协议,否则我肯定需要帮助:) 当我在View及其ViewModel之间实现依赖项注入时,我需要定义一个ViewModelProtocol以便注入模拟数据以方便预览. 这是我第一次尝试, 协议PersonViewModelProtocol {@发表的var person:Pe ..
发布时间:2021-04-23 19:10:30 其他开发

为计算属性添加@Published行为

我试图制作一个 ObservableObject ,它具有包装 UserDefaults 变量的属性. 为了符合 ObservableObject ,我需要使用 @Published 包裹属性.不幸的是,我无法将其应用于计算的属性,因为我将其用于 UserDefaults 值. 我如何使它工作?我该怎么做才能实现 @Published 行为? 解决方案 已更新:使用Enclos ..
发布时间:2021-04-23 19:10:27 移动开发

Combine + SwiftUI中的最佳数据绑定实践?

在RxSwift中,将View Model中的Driver或Observable绑定到ViewController(即UILabel)中的某些观察者非常容易. 我通常更喜欢建立一个由其他可观察对象创建的可观察对象的管道,而不是“强制"推送值(例如通过PublishSubject). 让我们使用这个示例:从网络中获取一些数据后,更新UILabel RxSwift + RxCocoa ..
发布时间:2020-12-01 06:11:48 移动开发

如何告诉SwiftUI视图绑定到多个嵌套的ObservableObject

我在另一个类中嵌套了两个类,这是SwiftUI视图中的一个可观察对象.即使嵌套类中的属性声明为@Published,但它们的值(当它们更改时)不会在主视图中更新. 这里提出了一个类似的问题,我可以用它来使它适用于两个子类之一,但不能同时适用于这两个子类. 如何告诉SwiftUI视图绑定到嵌套ObservableObjects 这是模型: class Submodel1: O ..
发布时间:2020-12-01 05:21:31 移动开发

关闭视图后,ObservedObject视图模型仍在内存中

我在SwiftUI和Combine中的内存管理遇到了麻烦. 例如,如果我有一个NavigationView,然后导航到带有TextField的详细信息视图,然后在TextField中输入一个值,然后单击“后退"按钮,则下次我转到该视图时,TextField具有先前输入的值 我注意到在取消了详细视图后,视图模型仍在内存中,这可能就是TextField仍然保留值的原因. 在UIKit ..
发布时间:2020-12-01 03:05:44 移动开发

SwiftUI NavigationBar在滚动时不消失

我想在滚动时隐藏我的NavigationBar,实际上它必须自动隐藏,但是当我尝试使用多个视图时它不起作用.另外,当我删除自定义视图并用NavigationView封装List时,它也可以工作.但是我需要SearchBar和StatusView视图.有什么建议吗? 顺便说一下,我在设备上运行它,在这里我使用canvas进行演示. 谢谢. var body: some View { ..
发布时间:2020-12-01 02:19:50 移动开发

iOS Swift组合:取消Set< AnyCancellable>

如果我将可取消集存储到ViewController中: private var bag = Set() 其中包含多个订阅. 1-我应该在deinit中取消订阅吗?还是自动完成工作? 2-如果是,我如何取消所有存储的订阅? bag.removeAll() is enough? 还是我应该遍历该集合并逐个取消所有订阅? for su ..
发布时间:2020-12-01 01:56:25 移动开发