gpt4 book ai didi

iOS UITextViews 数据挥之不去,即使我清除了一个数组

转载 作者:行者123 更新时间:2023-11-28 11:34:48 25 4
gpt4 key购买 nike

下图显示了 UIViewController 的 Xcode 图形调试层次结构。看起来我需要销毁 UITextViews 中的额外数据,这些数据在 UITextViews 数组中编辑后重新创建。每次我进行更改时,我都会将 UITextViews 的数组设置为 [],然后使用更新后的数据重新创建它。即使我验证 UITextView 数组确实被重置为零元素,然后用预期的元素数量重新创建,这些幻影图像仍然在屏幕上徘徊,调试层次结构显示某些东西没有被删除。

我怀疑我需要做一些内务处理来查找和销毁与 UITextViews 相关的额外数据,并且将数组设置回零并不会清除我的 subview 中的所有内容,但我不确定这可能是什么。我希望我的错误对于那些有更多经验的人来说是显而易见的,并且您会为我指明正确的方向。

enter image description here

我也在下面分享了一些代码,但我怀疑视觉可能是让有经验的人直截了当的最直接线索。

var topOfViewFrame: CGFloat = 0
textViewArray = []
for textBlock in textBlocks.textBlocksArray { // a textBlock has formatting data for a UITextView
let textBlockHeight = CGFloat(textBlock.numberOfLines) * textBlock.blockFontSize
let viewFrame = CGRect(x: 0, y: topOfViewFrame, width: textBoxWidth, height: textBlockHeight)
var newTextView = UITextView(frame: viewFrame)
newTextView.center = CGPoint(x: screenView.frame.width/2, y: topOfViewFrame + (textBlockHeight/2)) // screenView is the 320x240 subView holding the [UITextViews]
let viewFont = UIFont(name: "AvenirNextCondensed-Medium", size: textBlock.blockFontSize)
newTextView.font = viewFont
newTextView.text = textBlock.blockText
newTextView = configureTextBlockView(textBoxView: newTextView, textBlock: textBlock)
textViewArray.append(newTextView)
screenView.addSubview(newTextView) // screenView is the subview holding the [UITextViews]
topOfViewFrame += newTextView.frame.height // put the next UITextView directly below the previous one
}

谢谢!

最佳答案

如果您想从“screenView”中删除所有 TextView ,仅清除数组是不够的。您需要将其从 super View 中删除:

screenView.subviews.forEach({ $0.removeFromSuperview() })

关于iOS UITextViews 数据挥之不去,即使我清除了一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55761416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com