SwiftUI-无法为我可表示的视图初始化协调器

时间:2019-07-23 21:40:27

标签: swiftui

我正在尝试将UISegmentedControl集成到我的视图中,效果很好。但是我想在控件的索引更改时更新SwiftUI ContentView。

为此,我想创建一个协调器,用于通过绑定访问ContentView的状态。

我关注了官方

  

WWDC video

(与分钟13:37相关),但是当我尝试实现Coordinator类的init函数时,抛出了一个错误,提示“无法分配给属性:'$ textString'是不可变的”。

import SwiftUI
import UIKit

struct SegControl: UIViewRepresentable {

    class Coordinator: NSObject {

        @Binding var textString: String

        init(textString: Binding<String>) {
            //Error: Cannot assign to property: '$textString' is immutable
            $textString = textString
        }

        @objc func testFunc() {
            textString = "Updated!"
        }

    }


    @Binding var textString: String

    func makeCoordinator() -> Coordinator {
        return Coordinator(textString: $textString)
    }

    func makeUIView(context: Context) -> UISegmentedControl {
        return UISegmentedControl(items: ["One", "Two"])
    }

    func updateUIView(_ uiView: UISegmentedControl, context: Context) {
        uiView.center = uiView.center
        uiView.selectedSegmentIndex = 0
        uiView.addTarget(context.coordinator, action: #selector(Coordinator.testFunc), for: .valueChanged)
    }


}

0 个答案:

没有答案