@@ -16,6 +16,8 @@ extension BusUI { | |||||
) { | ) { | ||||
self.textApp = textApp | self.textApp = textApp | ||||
self.textUI = textUI | self.textUI = textUI | ||||
/**/print("ИГР BusUTF(\(Unmanaged.passUnretained(self).toOpaque())).init textA/textU: '\(textApp)'/'\(textUI)'") | |||||
$id | $id | ||||
.sink { [weak self] v in self?.setup(v) } | .sink { [weak self] v in self?.setup(v) } | ||||
@@ -3,17 +3,25 @@ import SwiftUI | |||||
extension MeetupId { | extension MeetupId { | ||||
public struct TV: View { | public struct TV: View { | ||||
@StateObject var textField = BusUI.TextField(K.testTextApp, K.testTextUI) | |||||
let id: String | |||||
@StateObject var vm = TVM() | |||||
public init(_ id: String) { | public init(_ id: String) { | ||||
textField.id = id | |||||
self.id = id | |||||
} | } | ||||
public var body: some View { | public var body: some View { | ||||
TextField("TV", value: $textField.v, formatter: BusUI.TextFieldSource()) | |||||
TextField("TV", value: vm.$textField.v, formatter: BusUI.TextFieldSource()) | |||||
.padding(8) | .padding(8) | ||||
.border(Color.blue) | .border(Color.blue) | ||||
.animation(.easeInOut(duration: 0.3)) | .animation(.easeInOut(duration: 0.3)) | ||||
.onAppear { | |||||
vm.setup(id) | |||||
} | |||||
.onChange(of: id) { newValue in | |||||
vm.setup(newValue) | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,17 @@ | |||||
import BusX | |||||
extension MeetupId { | |||||
public final class VM: ObservableObject { | |||||
let textField = BusUI.TextField(K.testTextApp, K.testTextUI) | |||||
@Published public var id: String? | |||||
var subscriptions = [AnyCancellable]() | |||||
public init() { } | |||||
public setup(_ id: String) { | |||||
/**/print("ИГР MeetupIV(\(Unmanaged.passUnretained(self).toOpaque())).setup id: '\(id)'") | |||||
textField.id = id | |||||
} | |||||
} | |||||
} | |||||
@@ -4,8 +4,7 @@ import UIKit | |||||
struct Content: View { | struct Content: View { | ||||
var body: some View { | var body: some View { | ||||
MeetupId.V() | |||||
Divider() | |||||
//MeetupId.V() | |||||
MeetupId.TV("uuid-1") | MeetupId.TV("uuid-1") | ||||
Divider() | Divider() | ||||
MeetupId.TV("uuid-2") | MeetupId.TV("uuid-2") | ||||