【问题标题】:Textfield's text inside AlertController generates crash only in iOS 11.0+AlertController 中 Textfield 的文本仅在 iOS 11.0+ 中产生崩溃
【发布时间】:2018-04-11 01:22:57
【问题描述】:

我有以下代码适用于 iOS 8.0+ 到 iOS 10.3,但在 iOS 11.0+ 上崩溃,我无法理解原因

代码:

 alertcontrol.addTextFieldWithConfigurationHandler({ (textField) -> Void in

                    textField.font = UIFont.systemFontOfSize(14)
                    textField.placeholder = "Type Date as dd-mm-yyyy"
                    let endate = endDate.formatedDate("dd-MM-yyyy")
                    textField.text = endate
                    textField.textAlignment = .Left

                })

此代码在 iOS 11.0+ 中的 textField.text 处生成崩溃,但相同的代码适用于 iOS 8.0+ 到 iOS 10.3 同样这里 endate 总是有一个字符串输出。

崩溃输出:

libc++abi.dylib:以 NSException 类型的未捕获异常终止

对于 endDate 上的代码 在 NSDate 扩展内

func formatedDate(format:String)-> String
{
    let formatter = NSDateFormatter()
    formatter.dateFormat = format
    return formatter.stringFromDate(self)
}

输出

“2017 年 27 月 10 日”

【问题讨论】:

  • 日志是否给出了异常的原因?还要检查您的警报控制器首选样式属性是否设置为“警报”
  • let endate = endDate.formatedDate("dd-MM-yyyy") 的这一行是什么可能会在日期格式无效时导致崩溃,放置异常断点
  • 如何获得这个:let endate = endDate.formatedDate("dd-MM-yyyy")?
  • endate 没有任何崩溃,当我 print(endDate.formatedDate("dd-MM-yyyy")) 它给我日志输出,所以,我肯定知道它包含一个值

标签: ios swift ios11 swift2.3


【解决方案1】:

您使用的是哪种UIAlertController 样式?添加文本字段仅适用于.alert,不适用于.actionSheet

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多