显示字典中的项目以在Swift中的按钮单击上一一标记

时间:2019-03-21 07:17:56

标签: swift xcode dictionary

我的项目中有两个场景。在第一个中,用户输入两个值,然后将这些值添加到以words作为键并将input1作为值的字典input2中:

var words = [String: String]()

class ViewController: UIViewController {

@IBOutlet weak var input: UITextField!
@IBOutlet weak var input2: UITextField!

@IBAction func add(_ sender: UIButton) {
  if (input.text != "") {
     words = [input.text: input2.text] as! [String : String]
  }
}

在第二个中,我要使之成为上一个场景中添加的所有值对,并在单击按钮时将它们一对一地显示在两个标签上。

到目前为止,我只有这个:

class ViewController2: UIViewController {

@IBOutlet var word1: UILabel!
@IBOutlet var word2: UILabel!

override func viewDidAppear(_ animated: Bool) {
    for data in words{
        let key1 = data.key
        let value1 = data.value
        word1.text = key1
        word2.text = value1
    }
  }
}

它仅在屏幕加载时显示添加的单词的最后一个值...

还有一个问题,我用来保存用户输入值的方法是否正确?它实际上是一个接一个地添加新值,还是只重写第一个添加的新值?

视觉表现形式: visual representation

2 个答案:

答案 0 :(得分:1)

使用单词数组将单词的每个输入保存为字典数组。然后只有您才能显示Scene2上的所有项目

ValueError: could not convert string to float: '.0 .0 .3 .7 .2 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 '

这里不要将值保存为单词。

在单词中插入一个值

var words = [[String: String]]()

然后将单词传递到下一个场景。 按以下格式显示每个键和值

let value = ["key":"value"]
 words.append(value)

答案 1 :(得分:1)

您快完成了。让我对您的代码进行一些更改。

第一,替换

var words = [String: String]()

var words = [Dictionary<String, String>]()

第二,替换您的“添加”按钮功能-

@IBAction func add(_ sender: UIButton) {

    if (input.text != "") {

         words.append([input.text: input2.text] as! [String : String])
         input.text = ""
         input2.text = ""
     }
}

第三,将此行添加到您的secondViewContoller-

var wordIndex = 0

第四,在viewDidAppear中删除代码,然后添加以下行-

showValue()

现在定义此方法

private func showValue(){

    if wordIndex < words.count {

        if let word = words[wordIndex] as? Dictionary<String, String> {
            word1.text = word.keys.first
            word2.text = word.values.first

        }

    }else{
        debugPrint("No more words!")
    }
}

现在,是时候添加“下一步”按钮动作来查看下一个单词了,我们开始-

@IBAction func btnActionNext(_ sender: UIButton) {

    wordIndex += 1
    showValue()

}

我们现在完成了。:)

让我知道您是否仍然有任何问题。