首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Cosmicmind访问TextField中的文本

用Cosmicmind访问TextField中的文本
EN

Stack Overflow用户
提问于 2016-02-18 19:14:11
回答 1查看 199关注 0票数 0

我在使用textField中的文本时遇到了一些困难。我已经复制了下面的相关代码(并且删除了一些不应该影响我所得到的错误的东西)。

  • 代码构建并运行良好。
  • 我可以输入文本到textFields (电子邮件,密码)。
  • 但是,当我尝试在任何地方使用文本时,都会出现错误: Alamofire代码上的fatal error: attempt to bridge an implicitly unwrapped optional containing nil,特别是参数。
  • 即使我只是尝试print(email),我也会得到一个零错误。

我是不是漏掉了什么?我觉得这应该很容易,但我似乎想不出来。

代码语言:javascript
复制
class loginPageViewController: UIViewController, TextFieldDelegate {

private var email: TextField!
private var password: TextField!

func loginButton(sender: RaisedButton!){
    let parameters = [
        "email" : email,
        "password" : password
    ]  

    Alamofire.request(.POST, "https://kidgenius.daycareiq.com/api/v1/sessions", parameters: parameters, encoding: .URL)
    //other alamofire code not relevant to question
}

override func viewDidLoad() {
    super.viewDidLoad()

    prepareEmail()
    preparePassword()
    prepareLoginButton()
}  

private func prepareEmail() {        
    let email : TextField = TextField(frame: 100, 100, 200, 45))
    email.delegate = self
    email.placeholder = "Email"
    //I removed some non relevant code here, just styling stuff
    view.addSubview(email)
}

private func preparePassword() {
    let password : TextField = TextField(100, 200, 200, 25))
    password.secureTextEntry = true
    password.delegate = self
    password.placeholder = "Password"
    //some more removed styling code
    view.addSubview(password)
    }

private func prepareLoginButton() {
    let loginButton : RaisedButton = RaisedButton(frame: 100, 250, 150 , 35))
    loginButton.setTitle("Login", forState: .Normal)
    loginButton.addTarget(self, action: "loginButton:", forControlEvents: UIControlEvents.TouchUpInside)
    //removed some styling code here
    view.addSubview(loginButton)
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-18 19:24:45

问题是您在顶部声明了email变量

代码语言:javascript
复制
private var email: TextField!

然后,在函数email中再次声明prepareEmail()

代码语言:javascript
复制
let email : TextField = TextField(frame: 100, 100, 200, 45))

但是您的private var email: TextField!从未被实例化。

为了解决问题,当您在let中实例化变量时,请删除prepareEmail()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35490419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档