在 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)
}
我的页面上有一个 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)
}