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

标签 ios arrays swift scrollview sknode

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


例如我运行:

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

print(usernameData)

我的输出显示:

[UsernameOne, UsernameTwo, UsernameThree, UsernameFour, UsernameFive]

当我运行时:

let usernameData = documents.map { $0["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 { $0["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 { $0["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)

}

关于ios - 在 Swift 的屏幕上的列中显示数组中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343768/

相关文章:

ios - 如何在根 TableView Controller 中通过 swift 在两个 TableView 之间建立 Segue 连接?

ios - 对格式感到困惑 - sqlite

IOS 在 UITableView 中点击 UILabel

c - 二进制数组转base64

ios - 用 if var 解开并仍然返回单元格

ios - UICollectionView 没有可见接口(interface)声明选择器 indexPathForSelectedRow

java - 基于多个参数构建排序列表?

java - LibGDX 中的多个敌人阵列

swift - 如何在 swift 3 中从 FacebookSdk 获取生日、城市、手机号码、州、国家

objective-c - KVO 或如何在 Swift 中监听来自外部的属性更改