为按钮创建单向绑定

Posted

技术标签:

【中文标题】为按钮创建单向绑定【英文标题】:Creating a one-way binding for buttons 【发布时间】:2020-06-18 22:24:14 【问题描述】:

我一直在尝试在这里测试一些代码,但我无法让它工作。

所以对于我希望它如何工作的原则:

在这个单一视图中,按下第一个 hello 按钮后,它应该运行一个函数来确定接下来的 4 个按钮显示什么。我不确定如何创建这种单向绑定以允许运行该功能并在按下后显示 4 个按钮。

我不断收到此错误:

“按钮”初始化程序的结果未使用

我尝试过的事情:

    在第一个Hello按钮的闭包中添加要出现的4个按钮,点击后什么都没有出现但是编译成功了!

有人可以帮忙吗?

var toggle1 = false
var buttonArray = [12,25,33,4]
var numberArray = [Int]()

func convertingIntoImage() 
    for numbers in buttonArray 
        let numberInString = String(numbers)
        numberArray = numberInString.compactMap str in Int(numberInString)
    


struct tryingOut : View 
    var body : some View 
        
        Button(action:  convertingIntoImage()  ) 
            Text("hello")
        

        Button(action:  print("Hello")  ) 
            ForEach (numberArray, id: \.self) 
                Image(systemName: "\($0)" + ".circle.fill")
            
        
    

【问题讨论】:

【参考方案1】:

如果我正确理解了您的问题,您可以尝试以下代码:

struct ContentView: View 
    @State var toggle1 = false
    @State var buttonArray = [12, 25, 33, 4]

    var body: some View 
        VStack 
            if !toggle1 
                Button(action:  self.toggle1.toggle() ) 
                    Text("hello")
                
             else 
                Button(action:  print("Hello") ) 
                    ForEach(buttonArray, id: \.self) 
                        Image(systemName: "\($0)" + ".circle.fill")
                    
                
            
        
    

您不需要单独的函数来转换buttonArray。您可以使用toggle 在显示hello 按钮和您的四个图像之间切换。

【讨论】:

感谢您的回复!我刚刚尝试了您的代码,但实时预览似乎对切换后从 1 个按钮更改为 4 个按钮没有影响。我还尝试使用我的原始代码,将我的变量和函数放在 ObservableOject 类中。从 1 按钮切换到 4 按钮后,这也不会更新视图。你知道可能出了什么问题吗?谢谢!哦,我也尝试了实时和调试预览。谢谢! @LCHUNG 哦,对。我应该使用VStack 而不是Group。我更新了我的代码 - 现在它也可以在预览中使用。 啊!谢谢!你知道为什么集团不做这项工作吗?我从没想过 Group 是罪魁祸首。 @LCHUNG Group 本身不是问题。当您将Group 放入VStack 时,它也可以在预览中使用。只有顶层的Group(在body 中)会中断预览。看起来*** View 没有在预览中动态刷新。

以上是关于为按钮创建单向绑定的主要内容,如果未能解决你的问题,请参考以下文章

vue之表单输入绑定

Vue生命周期与单向、单次、双向绑定

WPF中MVVM子窗口修改数据问题

双向数据绑定和单向数据绑定解释

Vue.js单向绑定和双向绑定实例分析

Vue.js快速上手|单向绑定与双向绑定