【问题标题】:Change label text when pressing a button using contents from an array [duplicate]使用数组中的内容按下按钮时更改标签文本[重复]
【发布时间】:2019-10-29 01:19:49
【问题描述】:

我试图在按下两个按钮之一时更改标签的文本(按钮 1 名为“过去”,按钮 2 名为“未来”)。结果应该是按下按钮 1 或按钮 2 时,它应该使用数组 1 (pastData) 或数组 2 (futureData) 的内容更改标签文本。

我很困,所以我不知道从哪里开始了。

import UIKit

var pastData = [
    "What was the greatest achievement you accomplished the past five years?",
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "10",
]

var futureData = [
    "What is the single most important thing to have accomplished within the next five years?",
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "10",
]


class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }


    @IBAction func pastButton(_ sender: UIButton) {
    }


    @IBAction func futureButton(_ sender: UIButton) {
    }

    @IBOutlet weak var label: UILabel!
}

我希望按下按钮时,它会使用特定数组中的索引之一更改标签文本。

我相信它与这个线程不同,因为我的线程是关于如何在按下按钮时更改文本,而不是每次显示时: How to randomize UILabel text each time the view controller is showed

User Interface from Xcode

【问题讨论】:

  • 你如何决定数组中的哪个元素应该显示在标签上?
  • 这是一个非常好的问题。我希望这回答了你的问题。当按下 Future 按钮时,我希望它从 futureData 数组中随机选择一个文本,而过去的按钮 / pastData 数组也是如此。
  • 就像很多新手对一种语言提出的问题一样,这实际上是 5 个独立的问题。他们之前已经分别回答过,但是新手无法做出所有这些区分。问题是:1)我如何确定变量的范围以便类函数可以看到它们? 2) 如何管理@IBOutlet 命名以避免运行时崩溃? 3) 我如何操作数组,特别是选择一个随机元素 4) 代码在哪里处理用户操作,如按钮按下? 5) 我如何使用我的变量直观地操作像UILabels 这样的简单视图?

标签: arrays swift button label


【解决方案1】:

要从array 中获取随机元素,您只需对该特定array 调用randomElement() 方法,即

@IBAction func pastButton(_ sender: UIButton) {
    self.label.text = self.pastData.randomElement()
}


@IBAction func futureButton(_ sender: UIButton) {
    self.label.text = self.futureData.randomElement()
}

在上面的代码中,

  1. 当按下pastButton 时,我正在呼叫pastData.randomElement() 并且
  2. 在按下futureButton 时调用futureData.randomElement() 并且

【讨论】:

  • 谢谢!我相信这会让我走得更远。虽然我现在收到以下错误代码:“'ViewController' 类型的值没有成员'pastData'”我不确定这是什么意思?
  • 检查变量名称pastData。如果您的 viewController 中甚至存在任何名称为 pastData 的变量。
  • 谢谢!我不小心在“Import UIKit”行下方添加了我的数组。我通过在“Class ViewController:UIViewController”行下方插入数组来修复错误。虽然现在我得到了一个错误。由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类与键 pastButtonLayout 的键值编码不兼容。”
  • 此异常表示您的插座未正确连接。删除并重新添加它们。
  • 你是个天才。我希望有一天我会变得和你一样熟练!
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 2018-02-25
  • 2017-09-18
  • 1970-01-01
  • 2018-10-11
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多