【问题标题】:Add data to a new line in UITextView every time button is pressed每次按下按钮时将数据添加到 UITextView 中的新行
【发布时间】:2018-06-16 23:46:40
【问题描述】:

我目前有一个函数,当按下按钮时,它会获取一个从 UIStepper 确定的值并将其添加到数字列表中。当我按下Add Tip 按钮时,它会在文本视图中正确显示小费金额,但是当我添加一个新值时,它会替换它而不是在下面添加它。 这是函数:

    @IBAction func addTipButton(_ sender: UIButton) {
        let tipDollarCent = dollar + cent
        sampleLog.text = "\(tipDollarCent)\n"
        totalLabel.text = tipDollarCent
    }

sampleLog 是文本视图,需要根据用户按下addTipButton 的次数来获取可变数量的数据行

我知道我最好的做法可能是做一个增量循环,我尝试实现一个单独的 addNewLine 函数,但 tipDollarCent 超出范围并给了我一个错误。

我最初也尝试将sampleLog.text = "\(tipDollarCent)\n" += "\(tipDollarCent)\n" 直接添加到函数中。

我希望有人能够耐心而亲切地向我解释在这种情况下使用的最佳循环是什么,以及如何正确实施它。

这是我的应用程序的屏幕截图,以便更容易看到我要完成的工作

【问题讨论】:

  • 如果我正确理解您的问题,您是否尝试过使用+= 运算符将sampleLog.text 与新字符串连接起来?
  • 这是我尝试过的第一件事,例如:sampleLog.text = "\(tipDollarCent)\n" += "\(tipDollarCent)\n" 为了清楚起见,我会将其添加到原始帖子中
  • 你的意思是sampleLog.text += "\(tipDollarCent)\n"?您给出的行无效?
  • 另外,澄清一下,您希望samepleLog 随每个新的tipDollarCent 一起增长,但totalLabel 会随着每个按钮的单击而改变。这是正确的吗?
  • 这就是我的问题所在。我为初学者的错误道歉。你的实现有效,虽然我不得不强制解开 sampleLog.text! 因为总会有一个值,我不应该担心可选的,对吧?

标签: ios swift uibutton uitextfield


【解决方案1】:

如果您希望 textView 文本附加新创建的字符串,您可以使用复合分配运算符添加 += 来连接您之前拥有的内容并使用新的字符串值增长它。

var foo:String = "Foo"
let bar:String = "Bar"
foo += bar /* FooBar */ /* foo = foo + bar */

对于您对双精度加法的评论,复合运算符也适用于相同类型的操作数。

var pi:Double = 3.0
let fourteen:Double = 0.14
pi += fourteen /* 3.14 */ /* pi = pi + fourteen */

【讨论】:

  • 检查 textView 文本属性是否为 nil 是没有意义的。即使你在检查它是否为 nil 之前给它分配了 nil,它也会返回 false
  • @LeoDabus 有趣,我会删除那部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多