【问题标题】:Create and custom one UIButton for multiple data为多个数据创建和自定义一个 UIButton
【发布时间】:2017-03-21 19:01:44
【问题描述】:

我有一个内容数组如下:

数组 = [Name1,Name2,Name3...]

我想在按钮的标签上显示这些内容。问题是,如果我的数组有很多项目并且我不想创建这么多的按钮,那将是核心问题。所以请任何人都可以帮助我找出为这些数据生成一个通用按钮实例的方法。就像我的数组有 2 个项目,视图将显示 2 个按钮等等......非常感谢!

P/s:@Janmenjaya 的答案解决了问题,这是我的代码,仍然有点卡在 y 位置。

func displayFileList() {
    for i in 0..<fileIdList.count {
        let yRef : CGFloat = 35
        let title = String(fileIdList.indexOf(i))
        let button = UIButton(frame: CGRect(x: 0, y: yRef * CGFloat(i), width: 919, height: 30))
        button.setTitle(title, forState: UIControlState.Normal)
        button.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
        button.backgroundColor = UIColor.yellowColor()
        button.layer.borderWidth = 1;
        button.layer.borderColor = UIColor.blackColor().CGColor
        self.fileButtonContainView.addSubview(button)
    }
}

【问题讨论】:

    标签: ios arrays swift uibutton reusability


    【解决方案1】:

    您可以遍历数组并根据数组内容以编程方式创建带有动态标题的按钮。

    按照示例代码进行操作

    示例代码 sn-p:

        arrData = NSMutableArray();
    
        arrData.addObject("Test0");
        arrData.addObject("Test1");
        arrData.addObject("Test2");
        arrData.addObject("Test3");
        arrData.addObject("Test4");
    
        var yRef : CGFloat = 100
    
        for i in 0..<arrData.count{
    
            let title = arrData.objectAtIndex(i);
    
            let btn = UIButton(type: .Custom);
            btn.frame = CGRectMake(100, yRef, 100, 40);
            btn.setTitle(title as? String, forState: UIControlState.Normal)
            btn.backgroundColor = UIColor.grayColor();
            self.view.addSubview(btn);
    
            yRef += CGRectGetHeight(btn.frame) + 10;
        }
    

    输出:

    希望对你有帮助

    编码愉快...

    【讨论】:

    • 只是一点点,当我设置按钮的标题时,它不会显示文本。它显示如下警告:“从'索引投射?'到不相关的类型'String'总是失败'。类型转换似乎有些问题
    • @DuyKhanhNguyen 告诉我你的代码。可能是您没有在数组中保留字符串,您可能在数组中保留了自定义对象。
    • 我解决了,问题来自 yRef 变量,但现在我想将它们放在一个高度 = 90 的 UIview 中,以便我可以显示高度 = 30 的 3 个按钮与视图完全吻合.但我只是还没有解决它。这是我的代码:
    • @DuyKhanhNguyen 我刚刚注意到您已经在 for 循环中使用了 yRef,您需要将其从 for 循环中取出,否则每个按钮将位于相同的 y 位置,这样您就可以'不能看到所有按钮
    • @DuyKhanhNguyen 我刚刚注意到您已经在 for 循环中使用了 yRef,您需要将其从 for 循环中取出,否则每个按钮将位于相同的 y 位置,这样您就可以'不能看到所有按钮
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多