Swift 2 - for 循环创建多个 UIButtons

Posted

技术标签:

【中文标题】Swift 2 - for 循环创建多个 UIButtons【英文标题】:Swift 2 - for loop create multiple UIButtons 【发布时间】:2015-10-23 11:14:43 【问题描述】:

我有一个 for 循环,它根据用户注册的方式创建多个按钮。

按钮创建良好,我已向按钮添加了一个目标,该目标需要打印已按下哪个按钮并传递一个值。

目前为止:

func loadUserVideos() 

        let userVideoNames = ["andrew", "john", "verya", "patry", "gabriy"]

        let countUserNames = userVideoNames.count - 1

        for index in 0...countUserNames 

            //print("\(index) times 5 is \(index * 5)")

            //UIBUTTON PLAY VIDEO USER
            let customButtonPlayVideoUser = UIButton(frame: CGRectMake(145, 32, 64, 64))
            let imageCustomUserBtn = UIImage(named: "video-play.png") as UIImage?
            customButtonPlayVideoUser.setImage(imageCustomUserBtn, forState: .Normal)
            customButtonPlayVideoUser.addTarget(self, action: "CustomUserVideobtnTouched:", forControlEvents:.TouchUpInside)
            customViewUser.addSubview(customButtonPlayVideoUser)


        

    

    func CustomUserVideobtnTouched(sender: UIButton, index: Int)

        print(index)
    

如何将值传递给操作函数,以便应用查看按下了哪个按钮?

【问题讨论】:

您已经通过sender 引用了该按钮,但您也可以使用index (customButtonPlayVideoUser.tag = index) 标记该按钮 【参考方案1】:

你可以使用标签值:

       for index in 0...countUserNames 

            //print("\(index) times 5 is \(index * 5)")

            //UIBUTTON PLAY VIDEO USER
            let customButtonPlayVideoUser = UIButton(frame: CGRectMake(145, 32, 64, 64))
            let imageCustomUserBtn = UIImage(named: "video-play.png") as UIImage?
            customButtonPlayVideoUser.setImage(imageCustomUserBtn, forState: .Normal)
            customButtonPlayVideoUser.addTarget(self, action: "CustomUserVideobtnTouched:", forControlEvents:.TouchUpInside)
            customViewUser.addSubview(customButtonPlayVideoUser) 

            /// set tag
            customButtonPlayVideoUser.tag = index
        

然后

    func CustomUserVideobtnTouched(sender: UIButton)

        print(sender.tag)
    

【讨论】:

非常感谢。是否可以以相同的方式传递字符串? 不能。如果要存储字符串,则必须创建 UIButton 的子类。 请解决这个问题。如果我的答案是正确的,请标记答案。谢谢【参考方案2】:

您可以将索引设置为按钮标签属性,并在选择器方法中像这样获取索引,

sender.tag

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 @PetroKorienev 将数组的索引传递给按钮标签属性将解决问题。我也是这样回答的。即使是问题的作者也接受与正确答案相同的答案。那么,你的问题是什么? 上面的答案有一个如何完成特定任务的例子,当你的一个是关于使用属性的建议时。 SO 是一个以高质量内容为荣的地方,这是通过适度来实现的——每篇文章都应该有用、信息丰富且清晰。您的帖子是评论,而不是答案。如果您想在 SO 上发帖,请考虑让您的答案更广泛一些。我不是要求写一首诗,但是对于这个特定的问题,2-3 句话和一个用法示例就足够了。 SO 已经有 1000 万(想象一下,1000 万)个帖子,让所有帖子都动起来至关重要。 @PetroKorienev 由于我没有足够的声誉来添加 cmets,那么我该如何向任何人提供解决方案/建议? 总是很难开始。千里之道,从第一步开始。考虑在网站上添加一些内容(您只需要对答案进行 2 次投票或对问题进行 4 次投票)以获得评论特权(根据您的声誉判断,您已经拥有了)。如果你想回答 - 给点详细的,就像我上面说的(或写评论)

以上是关于Swift 2 - for 循环创建多个 UIButtons的主要内容,如果未能解决你的问题,请参考以下文章

动态创建多个数组

如何在swift中使用for循环以编程方式创建按钮

Swift和SwiftUI

如何使用 Swift SpriteKit 在 For 循环中一一创建 SKSprite 节点

Swift 2:在 for 循环中守卫?

Swift编程语言中如何实现自定义类型的for-in循环(基于Swift 2.2)