Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 通过循环从数据库中添加UILabel文本-Swift 3_Arrays_Swift_Database_Uilabel_Character - Fatal编程技术网

Arrays 通过循环从数据库中添加UILabel文本-Swift 3

Arrays 通过循环从数据库中添加UILabel文本-Swift 3,arrays,swift,database,uilabel,character,Arrays,Swift,Database,Uilabel,Character,我正在通过为循环创建UILabel,我想在UILabel数据库中添加文本,数据库中的文本a字符串,但我正在将字符串转换为数组字符,例如,我有4个标签和4个字符(a、B、C、D),我想将每个字符添加到一个标签中,如何才能做到这一点??? 我想这样创作: 这是我的代码: func createTarget(id: Int) { listdata = dbHelpr.getDatabase(rowId: id) var targetHeigt = CGFloat() let

我正在通过
循环创建
UILabel
,我想在
UILabel
数据库中添加文本,数据库中的文本a
字符串
,但我正在将
字符串
转换为
数组字符
,例如,我有4个标签和4个字符(a、B、C、D),我想将每个字符添加到一个标签中,如何才能做到这一点???

我想这样创作:

这是我的代码:

func createTarget(id: Int) {

    listdata = dbHelpr.getDatabase(rowId: id)
    var targetHeigt = CGFloat()
    let viewWidth = self.view.frame.size.width
    
    if viewWidth == 320 {
        targetHeigt = 2.5
    } else {
        targetHeigt = 5
    }
    
    for data in listdata { // listdata is (Database) has a variable (ans)
        let yAxis : CGFloat = (self.view.frame.height) * 60%
        let i = data.ans.length
        // char count
        let width: Int = Int(view.frame.size.width) - 40
        // frame width
        var targetWidth: Int = (width - (i - 1) * 5) / i
        if targetWidth > 50 {
            targetWidth = 50
        }

        let totalWidth: Int = (targetWidth * i) + ((i - 1) * 5)

        for x in 0..<i {
            let currentWidth: Int = (width / 2) - (totalWidth / 2) + (x * targetWidth) + (x * 5) + 20
            let targetLabel = UILabel(frame: CGRect(x: CGFloat(currentWidth), y: yAxis, width: CGFloat(targetWidth), height: 50))
            targetLabel.backgroundColor = .white
            targetLabel.layer.masksToBounds = true
            targetLabel.layer.cornerRadius = 5
            targetLabel.textAlignment = .center
            targetLabel.textColor = .black

            for tar in data.ans.characters {
                targetLabel.text = String(tar)
            }

            self.view.addSubview(targetLabel)
        }
    }
}
这是我上面代码的结果:

我的输出:

D C B A

D C B A

D C B A

D C B A


创建与第一张图片完全相同的字符标签的最佳解决方案是什么?

您已经为每个字符创建了一个标签,因此无需再次循环

试试这个:

for (x, tar) in data.ans.characters.reversed().enumerated() {
    let currentWidth: Int = (width / 2) - (totalWidth / 2) + (x * targetWidth) + (x * 5) + 20
    let targetLabel = UILabel(frame: CGRect(x: CGFloat(currentWidth), y: yAxis, width: CGFloat(targetWidth), height: 50))
    targetLabel.backgroundColor = .white
    targetLabel.layer.masksToBounds = true
    targetLabel.layer.cornerRadius = 5
    targetLabel.textAlignment = .center
    targetLabel.textColor = .black

    targetLabel.text = String(tar)

    self.view.addSubview(targetLabel)
}

您的4个标签是否已经创建(可能在故事板中)。您有@IBOutlets吗?请插入打印语句来编辑您的第一个代码块,以涵盖所有内容。然后向我们展示结果。每个块都是独立的UILabel吗?不,我以编程方式创建了我的标签@vacawama创建标签后,你对它做了什么?它工作了,但我的角色让我从左到右(a B C D)我想从右到左这样(D C B a)我怎么能做到呢?
对于数据中的(x,tar)。ans.characters.reversed().enumerated(){
for (x, tar) in data.ans.characters.reversed().enumerated() {
    let currentWidth: Int = (width / 2) - (totalWidth / 2) + (x * targetWidth) + (x * 5) + 20
    let targetLabel = UILabel(frame: CGRect(x: CGFloat(currentWidth), y: yAxis, width: CGFloat(targetWidth), height: 50))
    targetLabel.backgroundColor = .white
    targetLabel.layer.masksToBounds = true
    targetLabel.layer.cornerRadius = 5
    targetLabel.textAlignment = .center
    targetLabel.textColor = .black

    targetLabel.text = String(tar)

    self.view.addSubview(targetLabel)
}