如何在数组中引用 UILabel 或 UIButton 集合 indexPath

Posted

技术标签:

【中文标题】如何在数组中引用 UILabel 或 UIButton 集合 indexPath【英文标题】:how can I refer to UILabel or UIButton collections indexPath in array 【发布时间】:2018-03-24 22:31:28 【问题描述】:
@IBOutlet var buttons: [UIButton]!
@IBOutlet var labels: [UILabel]!

@IBAction func cevapSeçildi(_ sender: UIButton) 
    if sender == buttons[0] 
        `enter code here`
        labels[0].backgroundColor = UIColor.yellow 
    

我想要这个..

var x : Int

if sender == buttons[x]  labels[x].backgroundColor = UIColor.yellow 

你能帮帮我吗

【问题讨论】:

有很多按钮,我想更改按钮旁边标签的背景颜色。我可以在集合数组中一一制作。但我可以通过编程方式实现吗 【参考方案1】:

几点:

    使用按钮数组映射到单元格索引仅适用于单节表视图或集合视图。如果您有一个分段的表格视图或一个在行和列中的集合视图,那么这种方法将不起作用。

    如果您想将所选单元格上的标签设为黄色,而将所有其他单元格设为白色,则更改所有单元格是没有意义的。表格视图/集合视图一次只显示几个单元格,当您滚动时,这些单元格会被回收并用于表格视图/集合视图中的不同索引。

如果您让我知道您使用的是表格视图还是集合视图,我可以向您展示一个更好的方法。

编辑:

由于您没有使用表格视图或集合视图,因此直接操作标签确实有意义:

@IBAction func cevapSeçildi(_ sender: UIButton) 
    let buttonIndex = buttons.index(of: sender)
    for (index, label) in labels.enumerated) 
    
    if index == buttonIndex 
        label.backgroundColor = UIColor.yellow 
     else 
        label.backgroundColor = UIColor.white
     

【讨论】:

感谢您的回复。不是表格视图。只是按钮和标签并排嵌入堆栈中。我想改变别人,因为只有一个正确的答案。如果用户更改答案,我希望其他人是白人 那你为什么要引用 indexPath 呢?这是用于引用表格视图和集合视图中的单元格的结构。 感谢您的帮助。我对编码很陌生。所以有时我想不出对你来说很容易的事情:)【参考方案2】:

你可以用

获取按钮的索引
var index = buttons.index(of: sender)

然后设置

labels[index].backgroundColor = UIColor.yellow

如果您想同时将所有其他按钮设置为不同的颜色,请考虑:

let buttonIndex = buttons.index(of: sender)
for var label in labels 
    if(labels.index(of: label) == buttonIndex) 
        label.backgroundColor = UIColor.yellow
     else 
        label.backgroundColor = UIColor.white
    

【讨论】:

又怎么能让别人变白。 İ 表示除了索引处的元素。 我在我的回答中添加了这个案例

以上是关于如何在数组中引用 UILabel 或 UIButton 集合 indexPath的主要内容,如果未能解决你的问题,请参考以下文章

使用时间和动画从字符串数组中更改 UILabel/UIButton 文本

c#如何将结构的引用添加到数组或列表?

如何在滚动视图中使 UIImage 低于 UILabel 或 UITextView

如何将 NSArray 值设置为 UILabel

如何为 UIControls 组设置单个 VoiceOver

如何根据 UILabel 动态调整 CollectionViewCell 的大小