【问题标题】:How to transfer variable from NSNumberFormatter to another ViewController?如何将变量从 NSNumberFormatter 传输到另一个 ViewController?
【发布时间】:2018-07-05 17:57:33
【问题描述】:

我有一个函数 NSNumberFormatter:

@objc func doneClicked() {
                view.endEditing(true)


                let formatter = NumberFormatter()
                formatter.locale = Locale.current
                formatter.numberStyle = .decimal
                formatter.minimumSignificantDigits = 6

                if let text = textField.text, let number = formatter.number(from: text) {

                    year = number.doubleValue

                    mounthresult = year * 12

                    mounthLabel.text = formatter.string(from: NSDecimalNumber(value: year).multiplying(by: 12))

                }
    }

我需要在另一个ViewController 中处理到Label 的数据传输。

制作prepare forSegue func:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "yearmounth" {
        let mounthController = segue.destination as! MounthsViewController

        mounthController.mounth = mounthresult
}

在这种情况下,传输的 var 没有格式化。并且节目没有本地化。

mounthresult = formatter.number(from: mounthLabel.text!) as! Double

这种情况也没有提供任何东西...它已传输但没有格式化程序显示。

我还尝试将NumberFormatter 插入另一个控制器的ViewDidLoad。但在这种情况下,NumberFormatter 不会加载到 ViewDidLoad...

谁知道解决方法?

【问题讨论】:

  • 如果要传输格式化的数字,为什么不传输格式化的数字(字符串)而不是数字

标签: ios swift variables segue number-formatting


【解决方案1】:

您可以简单地传递格式化文本:

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "yearmounth" {
        let mounthController = segue.destination as! MounthsViewController

        mounthController.mounth = mounthLabel.text
   }

或将数字存储在变量中并以类似方式传递。

【讨论】:

  • 我将变量类型更改为字符串并修改了格式化程序方法,但现在我的应用程序崩溃了......
  • 由于未捕获的异常“NSDecimalNumberOverflowException”而终止应用程序,原因:“NSDecimalNumber 溢出异常”
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多