更改数组中的元素时更改快速UILabel

时间:2019-10-10 10:13:06

标签: arrays swift uilabel

我有一个无法解决的问题: 我有2个文件,其中一个包含元素数组(名称和图像),另一个文件尝试调用数组元素以更改UILable中的文本。

第二个文件中数组的代码:

var items: [ItemInfo] = [("AAZ-2", "AAZ-02"), ("BACT01", "Anti-Bacterial"), ("FK01", "Fresh Keeping"), ("mouse", "Anti-Rodents"), ("RIC01", "Anti-VOC"), ("UV01", "UV Protection")]

在另一个文件中,我可以从另一个文件中访问变量和数组:

let demoViewController: DemoViewController = DemoViewController()

现在,我创建一个函数,从该函数中获取代码以从数组调用文件

func newLable(){
     if demoViewController.items.enumerated().first(where: {$0.element.title == "AAZ-02"}) != nil{
           textLabel.text = "text1"

    }else if demoViewController.items.enumerated().first(where: {$0.element.title == "Anti-Bacterial"}) != nil{
               textLabel.text = "tex2"

    }

但是每次在第一个(数组的元素)和第二个之间切换元素时,每次尝试运行应用程序时,我都会在标签中收到相同的文本(输出为:代码中的text1)。

谢谢大家的帮助

1 个答案:

答案 0 :(得分:1)

我想您对“第一”的含义有误解。

First并不意味着在第一个索引处查找项目,而是 在适合您的搜索条件下查找第一个项目(在任何索引处)

>

因此,当您向数组请求“第一个”项目时,即满足您的谓词(例如,等于“ AAZ-02”),那么无论该项目在哪里,它总是会找到答案。因此,当您切换前两个项目时,此功能将找到该项目,尽管它位于较高的索引上。这意味着,您的“其他”-路径将永远不会执行。

您最好尝试一下:

// Pass in your itemInfo you want to search for 
func newLabel(forItem item : ItemInfo) {

     // search the first occurrence of your item
     if demoViewController.items.enumerated().first(where: {$0.element.title == item.title}) != nil {

         // if found -> set the itemInfo as the labelTitle
         textLabel.text = item.title
     }
}