在 Swift 的屏幕上的列中显示数组中的字符串?

Display strings from an array in a column on screen in Swift?

我的页面上有一个 ScrollView,我有一个包含一堆字符串的数组。我正在尝试将页面上的字符串显示在一列中,每行一个字符串。


比如我运行:

let usernameData = documents.map { [=11=]["playername"]! }

print(usernameData)

我的输出显示:

[UsernameOne, UsernameTwo, UsernameThree, UsernameFour, UsernameFive]

当我 运行:

let usernameData = documents.map { [=13=]["playername"]! }

for usernames in usernameData {
   print(usernames)
}

我的输出显示:

UsernameOne
UsernameTwo
UsernameThree
UsernameFour
UsernameFive

当我尝试添加这些字符串以在列中的 ScrollView 上显示时,我试图将它们添加到 SKLabelNode 并将我的字符串分配为文本,然后我将增加每个 SKLabelNode 的 y 位置细绳。例如:

我运行这个:

let stringOne = SKLabelNode(fontNamed: "Times New Roman")
let usernameData = documents.map { [=15=]["playername"]! }

for usernames in usernameData {
   self.stringOne.text = usernames as? String
   self.stringOne.fontSize = 150
   self.stringOne.fontColor = SKColor.white
   self.stringOne.position = CGPoint(x: self.frame.midX * 1.50, y: self.contrainer.frame.maxY * 2.90)
   self.stringOne.zPosition = 100
   self.moveableNode.addChild(self.stringOne)

}

但是失败了,因为:

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attemped to add a SKNode which already has a parent: <SKLabelNode> name:'(null)' text:'UsernameOne' fontName:'Times New Roman' position:{1536, 1978.031982421875}'

如何在屏幕上的一列中显示存储在该数组中的所有字符串,每列一个字符串?我尝试使用 ScrollView,因为我在其他地方使用过它,而我的实际数组包含大约 100 个字符串,我需要将它们分开并显示在用户屏幕上的一列中。谢谢。

错误发生是因为您在 for 循环中一次又一次地添加相同的 SKLabelNode。相反,您应该在每次迭代中创建一个新的 SKLabelNode

let usernameData = documents.map { [=10=]["playername"]! }

for usernames in usernameData {
    let label = SKLabelNode(fontNamed: "Times New Roman")
    label.text = usernames as? String
    label.fontSize = 150
    label.fontColor = SKColor.white
    label.position = CGPoint(x: self.frame.midX * 1.50, y: self.contrainer.frame.maxY * 2.90)
    label.zPosition = 100
    self.moveableNode.addChild(label)

}