- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是最简单的例子。在预览中工作正常(UITextView
文本更新为“ouch”)。但是,在应用程序中运行它(即通过 sceneDelegate
添加为 rootView
),UITextView
不会更新。
import SwiftUI
class ModelObject : ObservableObject{
@Published var text = "Model Text"
}
struct MyTextView : UIViewRepresentable {
@ObservedObject var modelObject : ModelObject
func makeUIView(context: Context) -> UITextView {
let result = UITextView()
result.isEditable = true
return result
}
func updateUIView(_ view: UITextView, context: Context) {
view.text = modelObject.text
}
}
struct BugDemoView : View{
@ObservedObject var modelObject : ModelObject
var body : some View{
VStack{
MyTextView(modelObject: modelObject)
Button(action: {
self.modelObject.text = "ouch"
}){
Text("Button")
}
}
}
}
#if DEBUG
var mo = ModelObject()
struct BugDemoView_Preview: PreviewProvider {
static var previews: some View {
BugDemoView(modelObject: mo)
}
}
#endif
最佳答案
这看起来像是 SwiftUI 的某种错误,但有两种解决方法:
@Binding
传递给 MyTextView
:struct MyTextView : UIViewRepresentable {
@Binding var text: String
func makeUIView(context: Context) -> UITextView {
let result = UITextView()
result.isEditable = true
return result
}
func updateUIView(_ view: UITextView, context: Context) {
view.text = text
}
}
struct BugDemoView : View{
@ObservedObject var modelObject = ModelObject()
var body : some View{
VStack{
MyTextView(text: $modelObject.text)
Button(action: {
self.modelObject.text = "ouch"
}){
Text("Button")
}
}
}
}
MyTextView
:struct MyTextView : UIViewRepresentable {
var text: String
func makeUIView(context: Context) -> UITextView {
let result = UITextView()
result.isEditable = true
return result
}
func updateUIView(_ view: UITextView, context: Context) {
view.text = text
}
}
struct BugDemoView: View{
@ObservedObject var modelObject = ModelObject()
var body: some View{
VStack{
MyTextView(text: modelObject.text)
Button(action: {
self.modelObject.text = "ouch"
}){
Text("Button")
}
}
}
}
关于swiftui - 对 ObservedObject 的更改不会更新 UIViewRepresentable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58354063/
我创建了一个 UIViewRepresentable对于 UIVisualEffectView为了使某些组件充满活力。这是可行的,但是它似乎有时会垂直缩小控件,或者只是在运行时随机改变它们的边界。我似
我想,这个想法是这样的:无论 SwiftUI 中还没有提供什么,都可以使用 UIViewRepresentable 绕过。所以我开始为 TTTAttributedLabel 制作一个 UIViewRe
我正在处理一个应用程序,我必须将 MKMapView (UIKit) 嵌入到 SwiftUI View 中。不幸的是,我不能使用 SwiftUI 的实现 Map,因为我必须支持集群(Map 目前无法支
我正在开发一个新的 SwiftUI 应用程序,并试图弄清楚如何使这个 Swift 项目与 SwiftUI 兼容: https://github.com/suzuki-0000/SKPhotoBrows
由于 SwiftUI 的限制,我通常需要跳回 UIKit 并利用 UIKit 组件。这一切都很好,但我发现我通常需要继续创建单独的结构来保存我需要的功能。 例如。假设我有一个包含 4 个字段的表单,例
我正在尝试学习与 SwiftUI 结合,我正在努力如何使用 ObservableObject 更新我的 View (来自 UIKit) (以前的 BindableObject )。显然,问题是方法 u
我正在尝试将 UILabel 的自定义子类包装在 UIViewRepresentable 中,以便在 SwiftUI 中使用它。我正在使用 .sizeToFit 并打印框架,它在包装器中时看起来是正确
多行文本输入目前在 SwiftUI 中不受 native 支持(希望很快添加此功能!)所以我一直在尝试使用组合框架从 UIKit 实现支持多行输入的 UITextView,但是我的结果喜忧参半. 这是
我尝试在 SwiftUI 上构建一个基本的 Live Photo 应用程序,但在显示所选照片时遇到了困难。为此,我尝试为 PHLivePhotoView 制作 UIViewRepresentable:
当我在 SwiftUI 中创建一个 View 并在 Xcode 预览中呈现它时,使用 PreviewLayout.sizeThatFits ,预览会根据其内容调整其大小。当我使用 UIViewRepr
我正在尝试从 SpritzSwift 实现 uiView进入 SwiftUI 应用程序,但在第一次渲染后我无法更新它。驱动 UIView 的管理器正在工作,但 UIView 本身没有更新。我希望 Vi
我为 UITextField 创建了一个 UIViewRespresentable。我想应用修饰符: myTextField.font(.headline).keyboardType(keyboard
下面是最简单的例子。在预览中工作正常(UITextView 文本更新为“ouch”)。但是,在应用程序中运行它(即通过 sceneDelegate 添加为 rootView),UITextView 不
我很困惑,无法找到有关如何包装 UIKit 组件并正确调整其大小的文档。这是最简单的例子,包装一个 UILabel: public struct SwiftUIText: UIViewRepresen
是否可以制作 UIViewRepresentable View 需要 ViewBuilder参数处理动态内容,例如 ForEach循环? 我有以下 UIViewRepresentable我用来下拉到
我有一个 SwiftUI 应用程序,其中有几个 View 是使用 MapKit 制作的 map UIViewRepresentable。我有兴趣点和使用的自定义注释用于进一步操作的左右标注按钮。在右边
我有一个简单的例子,我在父 View 中创建一个 @ObservedObject 并将其传递给子 UIViewRepresentable。当我单击“按钮”时,它会修改 @ObservableObjec
在 SwiftUI 中将自定义 UILabel 添加到 List 时,我遇到单元格重用错误,其中某些单元格上的标签根本不可见,并且有些单元格被放置在左上角,而不考虑单元格的填充。它总是在初始单元格上完
为了定制一个UISlider ,我在 UIViewRepresentable 中使用它.它公开了一个 @Binding var value: Double这样我的 View 模型 ( Observab
将 lineBreakMode 设置为 byWordWrapping 并将 numberOfLines 设置为 0 似乎还不够: struct MyTextView: UIViewRepresenta
我是一名优秀的程序员,十分优秀!