给按钮相同的行为(双胞胎)

Posted

技术标签:

【中文标题】给按钮相同的行为(双胞胎)【英文标题】:Give buttons same behavior (twins) 【发布时间】:2016-04-30 14:47:05 【问题描述】:

我希望我的 UIButtons 能够相互交互 - (使用相应的按钮)

第一组按钮;

@IBOutlet var P1button1: UIButton!
@IBOutlet var P1button2: UIButton!
@IBOutlet var P1button3: UIButton!
@IBOutlet var P1button4: UIButton!
@IBOutlet var P1button5: UIButton!
@IBOutlet var P1button6: UIButton!
@IBOutlet var P1button7: UIButton!
@IBOutlet var P1button8: UIButton!
@IBOutlet var P1button9: UIButton!

第二组按钮;

@IBOutlet var P2button1: UIButton!
@IBOutlet var P2button2: UIButton!
@IBOutlet var P2button3: UIButton!
@IBOutlet var P2button4: UIButton!
@IBOutlet var P2button5: UIButton!
@IBOutlet var P2button6: UIButton!
@IBOutlet var P2button7: UIButton!
@IBOutlet var P2button8: UIButton!
@IBOutlet var P2button9: UIButton!

在我的代码中,我将图像应用到数组中的一个随机 P1button;

var buttons = [P1button1, P1button2, P1button3, P1button4, P1button5, P1button6, P1button7, P1button8, P1button9]
        buttons.shuffleInPlace()

        buttons[0].setImage(UIImage(named: "Green"), forState: .Normal)

现在,我想知道是否有办法使 P2buttons 与 P1buttons “合作”。这意味着如果将图像应用于P1button1,那么P2button1 将设置为相同的图像! (所有按钮都以此类推)

示例;

P2button1.setImage = UIImage(P1button1) 

这显然行不通,但希望能给你一个关于我想要实现的目标的线索。

【问题讨论】:

你……需要一个更好的数据结构……18个网点太多了,几乎不管你在做什么…… 在buttons[0].setImage之后...为什么不添加P2button1.setImage(UIImage(named: "Green"), forState: .Normal) @SamB 因为按钮[0] 可以是数组中的任何按钮。它由 shuffleInPlace() 函数打乱,这意味着它们将按随机顺序排列。 您需要为您的按钮分配标签,然后检查 button[0] 标签是否等于 P1Button 标签,然后您就拥有了分配图像所需的所有信息...请参阅此处***.com/questions/2802802/… 请不要使用标签... 【参考方案1】:

一种可能的方法是继承UIButton。也许是这样的......

class TwinButton 
    weak var twin: TwinButton?

现在,在您的 viewDidLoad 方法中,连接所有双胞胎。

p1button1.twin = p2button1
p2button1.twin = p1button1

现在,我将编写一组具有“双胞胎”语义的方法...

extension TwinButton 
    setWithTwin(title: String)
    setWithTwin(backgroundImage: UIImage)

这些方法只需在selftwin 上设置值。

【讨论】:

以上是关于给按钮相同的行为(双胞胎)的主要内容,如果未能解决你的问题,请参考以下文章

更改 asp 按钮行为

jQuery怎么给一些相同NAME的按钮添加相同的动作

删除循环中的控件会导致奇怪的行为

Word VBA:在选择更改时使 IRibbon 无效(实现粗体切换按钮的行为)

android怎么用for循环给多个button按钮赋相同的值

如何重新映射鼠标按钮以与自动热键中的热键前缀基本相同