unity3D Toggle:代码无法直接关联isOn?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3D Toggle:代码无法直接关联isOn?相关的知识,希望对你有一定的参考价值。

在给选项添加方法后发现Toggle中的isOn无法关联代码中的isOn

参考技术A 方法绑错了

private void Start()

写在Awake里也可以
toggle.onValueChanged.AddListener(OnFlamerSelect);

public void OnFlamerSelect(bool isOn)


SwiftUI Toggle 无法转换“Bool”类型的值?到预期的参数类型 'Binding<Bool>'

【中文标题】SwiftUI Toggle 无法转换“Bool”类型的值?到预期的参数类型 \'Binding<Bool>\'【英文标题】:SwiftUI Toggle Cannot convert value of type 'Bool?' to expected argument type 'Binding<Bool>'SwiftUI Toggle 无法转换“Bool”类型的值?到预期的参数类型 'Binding<Bool>' 【发布时间】:2021-01-23 04:51:11 【问题描述】:

使用 SwiftUI,我正在尝试设置切换值,但它告诉我 Cannot convert value of type 'Bool?' to expected argument type 'Binding&lt;Bool&gt;' 我从服务器获取数据,并解码 json 创建我的模型获取数据成功, 但是当我想更改 Toggle 时,会出现错误。

我的代码:

    struct content: View 
        @ObservedObject var articles = Article()
    
        var body: some View
            
            VStack
                List
                    ForEach(articles.article, id: \.id)article in
                        
                        NavigationLink(destination: DetailView()) 
                                
                                ListContent(article: article)
                          
                
            
                        
            
         
    


struct ListContent: View 
    var article: Article
    
    var body: some View 
        HStack 
            VStack (alignment: .leading) 

              Toggle("", isOn: self.article.isActive)
                .onChange(of: self.article.isActive)  value in
                    print(value)
                
                
            
            .padding(.leading,10)
            
            Spacer(minLength: 0)
            
             
    

我不能在我的代码中使用 self.article.isActive 恐怕我做错了什么,或者我不明白 Toggle 如何与 isOn 一起工作。

欢迎任何帮助或解释!谢谢。

【问题讨论】:

【参考方案1】:

您需要将 Binding 变量传递给 Toggle 的 'isOn' 参数。我假设,你的 'Article' 的 'isActive' 变量具有 Bool 类型。

        Toggle(model.title, isOn: Binding<Bool>(
                get:  model.isActive ,
                set: 
                        // $0 is the new Bool value of the toggle
                        // Your code for updating the model, or whatever
                        print("value: \($0)")
                    
        )

模型示例,以防万一

struct ToggleModel: Hashable 
    init(id: Int, title: String, isActive: Bool) 
        self.id = id
        self.title = title
        self.isActive = isActive
    

    let id: Int
    let title: String
    let isActive: Bool

您可以在此处找到工作代码示例:https://github.com/yellow-cap/toggle-list-swiftui/blob/master/SwiftUIToggleListExample/SwiftUIToggleListExample/ContentView.swift

【讨论】:

谢谢你,我成功了!

以上是关于unity3D Toggle:代码无法直接关联isOn?的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d中UGUI组件精简复盘Toggle组件

Unity3D 之UGUI 切换开关(toggle)

Unity3d中UGUI组件精简复盘Slider组件

Unity3d中UGUI组件精简复盘Slider组件

Unity3D 灵巧小知识点☀️ | Unity 中如何让 Toggle组件 实现多选一的效果

Unity3D - UGUI的初级应用