Код: Выделить всё
struct Wrap: UIViewRepresentable {
typealias Updater = (Wrapped, Context) -> Void
var makeView: () -> Wrapped
var update: (Wrapped, Context) -> Void
init(_ makeView: @escaping @autoclosure () -> Wrapped,
updater update: @escaping Updater) {
self.makeView = makeView
self.update = update
}
func makeUIView(context: Context) -> Wrapped {
makeView()
}
func updateUIView(_ view: Wrapped, context: Context) {
update(view, context)
}
}
extension Wrap {
init(_ makeView: @escaping @autoclosure () -> Wrapped,
updater update: @escaping (Wrapped) -> Void) {
self.makeView = makeView
self.update = { view, _ in update(view) }
}
init(_ makeView: @escaping @autoclosure () -> Wrapped) {
self.makeView = makeView
self.update = { _, _ in }
}
}
< /code>
Теперь проблема в том, что, если у класса uikit есть инициализатор, который может добавить ошибку, пытаясь использовать его на экране Swiftui не будет компилировать: < /p>
final class MyView: UIView {
init(text: String) throws {
throw NSError(domain: NSOSStatusErrorDomain, code: 20)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
- Похватить и заменить его пустым ревизором или настраиваемого отказа? Результат ?
Подробнее здесь: https://stackoverflow.com/questions/786 ... tui-screen