gpt4 book ai didi

xcode - 无法将数据存储到类的 var(属性)

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

我知道,我的标题令人困惑,但我的问题也让我感到困惑。 :-(

在 ReadMoreTextView 类中,我有一个 NSAttributedString 类型的变量,我可以填充它,但是当我阅读它时,它是nil!?好吧,我必须用我糟糕的英语来声明这个那个 ;-)

我想使用 Ilya Puchka 的恕我直言非常好的解决方案“ReadMoreTextView”来“压缩”一个大的 UITextView:

1 2

我想使用 NSAttributedString,因为我想用红色或蓝色“突出显示”“阅读更多”。

为此我使用这个初始化:

import UIKit
class ViewController: UIViewController {

@IBOutlet var textView: ReadMoreTextView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let text = "und ein neuer text Lorem ipsum dolor..."

let attributedString = NSAttributedString(string:text as String)
// 1) 2) 3)
textView = ReadMoreTextView(maximumNumberOfLines: 3, attributedTrimText: attributedString, shouldTrim: true)
...
}

那里

  1. 是“压缩” View 中前导线的数量,
  2. 是 NSAttributedString 和
  3. 是一个标志,如果文本应该被修剪

这是类(class):

class ReadMoreTextView: UITextView {
override init(frame: CGRect, textContainer: NSTextContainer?) {
super.init(frame: frame, textContainer: textContainer)
scrollEnabled = false
editable = false
}

convenience init(maximumNumberOfLines: Int, attributedTrimText: NSAttributedString?, shouldTrim: Bool) {
self.init()
self.maximumNumberOfLines = maximumNumberOfLines // 1)
self.attributedTrimText = attributedTrimText // 2)
println(attributedTrimText) // of course displays the attributedTrimText
self.shouldTrim = shouldTrim // 3)
}

@IBInspectable
var maximumNumberOfLines: Int = 0 {
didSet { setNeedsLayout() }
}

var attributedTrimText: NSAttributedString? {
didSet { setNeedsLayout() }
}

@IBInspectable
var shouldTrim: Bool = false {
didSet { setNeedsLayout() }
}

然后我在shouldTrim(最后一次调用)的断点处创建一个“po attributedTrimText”,结果是nil?!

所以由于attributedTrimText中的nil,textView在显示的时候是空的! :-(

我找不到原因...

最佳答案

如果你在 Storyboard 中将 textView 的类设置为 ReadMoreTextView,那么 Storyboard 会为你实例化 ReadMoreTextView 类,并且将其分配给 textView IBOutlet

在这行代码中:

textView = ReadMoreTextView(maximumNumberOfLines: 3, attributedTrimText: attributedString, shouldTrim: true)

您正在创建一个新的 ReadMoreTextView 并覆盖指向这个新的 ReadMoreTextView 的 socket 指针 textView。不幸的是,现在您没有与屏幕上的 ReadMoreTextView 进行交互。

您不应该覆盖 IBOutlet 变量。您应该只使用它来读/写 IBOutlet 变量的属性。

textView.maximumNumberOfLines = 3
textView.attributedTrimText = attributedString
textView.shouldTrim = true

关于xcode - 无法将数据存储到类的 var(属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31455504/

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