美文网首页
给UIAlertView里的UITextField添加初始文本

给UIAlertView里的UITextField添加初始文本

作者: 阿影 | 来源:发表于2016-12-17 13:54 被阅读65次

    swift版本
    Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
    Target: x86_64-apple-macosx10.9

    Title for English:
    Init a text field in a UIAlertView
    Default text in UIAlertVIew on show

    If you can only read English, go to see the last block of my source code.

    本来这么点事儿完全没有必要写一篇日志,尤其是UIAlertView已经被标记为过时的情况下。不过很多项目用到的第三方弹窗控件还是基于UIAlertView的,最重要的是,谷歌搜出来的stackoverflow的前几帖居然都说得乱七八糟。所以我还是写一篇吧。

    我们用UIAlertView写一个带输入的弹窗,通常这么写:

    let alert = UIAlertView.init(title: "请输入", message: "随便什么都可以", delegate: self, cancelButtonTitle: "取消")
    alert.alertViewStyle = .plainTextInput
    alert.show()
    

    效果是这样的


    弹窗

    有的时候我们希望在这个文本里放一个默认值。需要调用UIAlertView的textField方法,以获取其文本框对象,然后赋值。

    let alert = UIAlertView.init(title: "请输入", message: "随便什么都可以", delegate: self, cancelButtonTitle: "取消")
    alert.textField(at: 0)?.text = "随便"
    alert.alertViewStyle = .plainTextInput
    alert.show()
    

    然后发现这么写无效……

    经过调试发现,UIAlertView在init的时候根本没有生成textField,等alertViewStyle被设置为plainTextInput了以后才初始化了textField。
    所以代码需要改成这样:

    let alert = UIAlertView.init(title: "请输入", message: "随便什么都可以", delegate: self, cancelButtonTitle: "取消")
    alert.alertViewStyle = .plainTextInput
    alert.textField(at: 0)?.text = "随便"  //Must after set alertViewStyle
    alert.show()
    

    效果:


    带输入默认值的弹窗

    另外,如果alertViewStyle设为loginAndPasswordInput,textField(at: 1)才会初始化。

    相关文章

      网友评论

          本文标题:给UIAlertView里的UITextField添加初始文本

          本文链接:https://www.haomeiwen.com/subject/zwiomttx.html