2017-08-29 39 views
-2

使用Swift 3语法为iOS开发单视图应用程序以允许UIButton调用名为CheckAnswer()的函数,该函数认为字符串值在UITextField等于一个特定的值。尝试从另一个方法访问变量时出现“未解决的标识符”错误

当我的CheckAnswer()函数开始执行条件来为我的UITextField变量(称为Answer)辩论字符串值时,我总是收到一个错误(无法解析的标识符)。我不知道如何调试这个错误。 :)感谢您的任何建议!

override func viewDidLoad() { 
    super.viewDidLoad() 

    //INPUT BOX - User Input! 
    let Answer : UITextField = UITextField(frame: CGRect(x: 35, y: 150, width: 250, height:50)) 
    Answer.placeholder = "Enter Your Answer" 
    Answer.font = UIFont.init(name:"times", size: 24) 
    Answer.backgroundColor = UIColor(red:0xff ,green:0xff, blue:0x88 ,alpha:1) 
    self.view.addSubview(Answer) 

    //BUTTON - Check Answer! 
    let Button : UIButton = UIButton(frame: CGRect(x: 35, y: 200, width: 250, height:50)) 
    Button.setTitle("Submit Answer", for: .normal) 
    Button.titleLabel!.font = UIFont.init(name:"times", size: 24) 
    Button.backgroundColor = UIColor(red:0x00 ,green:0x00, blue:0x00 ,alpha:1) 
    Button.addTarget(self, action: #selector(CheckAnswer), for: .touchUpInside) 
    self.view.addSubview(Button) 
} 

func CheckAnswer(_ sender: UIButton){ 
    if Answer.text == "answer" || Answer.text == "Answer"  
    { print("Correct ! Response") } 
    else { print("Incorrect x Response") } 
    } 
+3

属性和方法名称应该以Swift中的小写字母开头。 – Moritz

回答

2

你应该answer一个类变量,所以这将是可用的viewDidLoad功能之外。 (该类型的也可以离开了,因为编译器可以从UITextField初始化,这将是一个UITextField猜测。)

let answer = UITextField(frame: CGRect(x: 35, y: 150, width: 250, height: 50)) 

override func viewDidLoad() { 
    super.viewDidLoad() 

    [...] 
} 

在另一方面,在斯威夫特变量名称应该以小写字母开头。类,结构和枚举名称以大写字母开头,这可能会导致未来混淆。

+0

非常感谢! – ctaylorgraphics

相关问题