我正在制作一个解决缺失变量的计算器应用程序,我添加了一段代码,通过点击屏幕上的任意位置或按“返回”键来解除键盘。
在添加if else语句以检查哪个变量丢失(使用.isNaN)之前,此函数正常工作,以便它可以解决该缺失变量。
这是我的特定视图控制器的代码:
import UIKit
class findSpeed: UIViewController, UITextFieldDelegate {
@IBOutlet weak var vValue: UITextField!
@IBOutlet weak var dValue: UITextField!
@IBOutlet weak var tValue: UITextField!
@IBOutlet weak var answer: UILabel!
@IBAction func solve(_ sender: UIButton) {
let v = Float(vValue.text! as String);
let d = Float(dValue.text! as String);
let t = Float(tValue.text! as String);
let solvev = (d!/t!);
let solved = (v!*t!);
let solvet = (d!/v!);
if (v!.isNaN) {
answer.text = "Answer: \(solvev)"
}
else if (d!.isNaN) {
answer.text = "Answer: \(solved)"
}
else {
answer.text = "Answer: \(solvet)"
}
}
override func viewDidLoad() {
super.viewDidLoad()
vValue.delegate = self;
dValue.delegate = self;
tValue.delegate = self;
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector("dismiss")))
}
func dismiss() {
vValue.resignFirstResponder()
dValue.resignFirstResponder()
tValue.resignFirstResponder()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
vValue.resignFirstResponder()
dValue.resignFirstResponder()
tValue.resignFirstResponder()
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
当我点击链接到此视图控制器的按钮时,我收到的错误发生在: Picture of error
答案 0 :(得分:0)
使用调试器查看应用程序崩溃的原因。显然protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acercade_activity);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// MenuInflater inflater = getMenuInflater();
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
//case R.id.action_settings:
// return true;
case R.id.perfil:
drawerLayout.openDrawer(Gravity.LEFT);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
是vValve
,这意味着您没有将任何内容连接到Interface Builder中的插座。
修复您的插座连接,您的问题中发布的错误将得到修复。
您还需要消除您正在进行的所有强制解包。否则你将有更多的崩溃需要处理。我强烈建议您查看What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean?