在由选择器视图选择填充的多个字段中进行乘法,除法和加法时遇到问题。我的所有选择器视图都显示数据,但是当我单击按钮进行计算时,没有任何反应,那么它会在计算函数上出错。
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var textColor: UITextField!
@IBOutlet weak var textRatio: UITextField!
@IBOutlet weak var textDensity: UITextField!
@IBOutlet weak var textRnumber: UITextField!
@IBOutlet weak var textWeight: UITextField!
@IBOutlet weak var textCdensity: UITextField!
@IBOutlet weak var textCatalyst: UITextField!
@IBAction func Calculate(_ sender: UIButton) {
let a: Int? = Int(textColor.text!)
let b: Int? = Int(textWeight.text!)
let c: Int? = Int(textRnumber.text!)
let d: Int? = Int(textCdensity.text!)
let volume = b! / a!
let total = volume * d!
let catalyst = total * c!
let catalysttext = String(catalyst)
textCatalyst.text = catalysttext
}
var colorBase = ["E-100 Blackout","E-110 Midnight","E-120 Smoke", "E-130 Earth", "E-140 Jungle", "E-150 Sand", "E-160 Concrete", "E-170 Coyote M17", "E-180 Daniel Defense Deep Woods","E-190 20150", "H-109 Gloss Black", "H-112 Cobalt", "H-115 Sig Teal", "H-122 Gold", "H-125 ICON Grey", "H-126 Dewalt Yellow", "H-127 Kel Tec Blue", "H-128 Hunter Orange", "H-130 Combat Grey", "H-131 Dark Green", "H-133 Cross Canyon Arms Green", "H-135 Ratio Gold", "H-136 Snow White", "H-137 Gloss White", "H-139 Steel Grey", "H-140 Bright White", "H-141 Prison Pink", "H-142 Light Sand", "H-143 Benelli Sand", "H-144 Corvette Yellow", "H-145 Great White", "H-146 Graphite Black", "H-147 Satin Mag", "H-148 Burnt Bronze", "H-149 Copper Brown", "H-150 Savage Stainless", "H-151 Satin Aluminum", "H-151E Stain Aluminum Electrostatic", "H-152 Stainless", "H-153 Shimmer Gold", "H-154 Medium Brown", "H-155 Taurus Stainless", "H-157 Bright Nickel", "H-158 Shimmer Aluminum", "H-160 Colt Coyote", "H-166 Electric Yellow", "H-167 USMC Red", "H-168 Zombie Green", "H-169 Sky Blue", "H-170 Titanium", "H-171 NRA Blue", "H-172 Sea Blue", "H-175 Robin's Egg Blue", "H-184 Glock Grey", "H-185 Blue Titanium", "H-188 Magpul Stealth Grey", "H-189 Noveske Bazooka Green", "H-190 Armor Black", "H-196 A.I. Sage Green", "H-197 Wild Purple", "H-198 A.I. Pale Brown", "H-199 Desert Sand", "H-200 Highland Green", "H-201 McMillan Grey", "H-20180 FS Tan", "H-202 McMillan Olive", "H-203 McMillan Tan", "H-204 Multicam Green", "H-205 APA Sage", "H-206 Tarjac Green", "H-207 Wild Green", "H-208 Wild Pink", "H-210 Sig Dark Grey", "H-211 BAE Green", "H-212 Federal Brown", "H-213 Battleship Grey", "H-214 Smith's Grey", "H-215 Smith's Brown", "H-216 Smith and Wesson Red", "H-217 Bright Purple", "H-218 School Bus Yellow", "H-219 Gun Metal Grey", "H-220 Ridgeway Blue", "H-221 Crimson", "H-222 Peach Melba", "H-223 Rode Pink", "H-224 Sig Pink", "H-225 Mud Brown", "H-226 Patriot Brown", "H-227 Tactical Grey", "H-229 Sniper Green", "H-231 Magpul Foliage Green", "H-232 Magpul O.D. Green", "H-233 Benchmade O.D. Green", "H-234 Sniper Grey", "H-235 Coyote Tan", "H-236 O.D. Green", "H-237 Tungsten", "H-238 Midnight Blue", "H-239 Benchmade Coyote Tan", "H-240 Mil Spec O.D. Green", "H-241 GA O.D. Green", "H-242 Hidden White", "H-243 Safety Orange", "H-244 Bright Pink", "H-245 SOCOM Blue", "H-246 Desert Gold", "H-247 Desert Sage", "H-248 Forest Green", "H-249 Nut Brown", "H-250 A.I. Dark Earth", "H-251 Green Beret Green", "H-252 Midnight Green", "H-254 Muddy River", "H-255 Crushed Silver", "H-256 Desert Verde", "H-257 Texas Tan", "H-258 Chocolate Brown", "H-259 Barrett Bronze", "H-260 Standard ACU Green", "H-261 Austrian Flat Dark Earth", "H-262 Stone Grey", "H-263 Foliage Green", "H-264 Mil Spec Green", "H-265 Flat Dark Earth", "H-266 Red-Orange", "H-267 Magpul Flat Dark Earth", "H-268 Troy Coyote Tan", "H-269 Barrett Brown", "H-270 Daniel Defense Mil Spec+", "H-271 Daniel Defense Tornado", "H-272 Daniel Defense Deep Woods", "H-280 Multi-Regional Earth", "H-281 Woodland Tan", "H-294 Midnight Bronze", "H-295 Cobalt Kinetics Slate", "H-296 Cobalt Kinetics Green", "H-300 Armor Clear", "H-301 Matte Armor Clear", "H-30118 FS Field Drab", "H-302 Pearl Clear", "H-303 RotoBlue Clear", "H-30372 FS Brown Sand", "H-30372 FS Brown Sand(Big Blue)", "H-33446 FS Sabre Sand", "H-36357 FS Grey", "H-400 Jesse James Eastern Front Green", "H-401 Jessie James Civil Defense Blue", "H-402 Jesse James Cold War Grey", "H-7504M Matte Brown", "H-8000 RAL 8000", "H-900 Electrical Barrier"]
var outBase = ["1.33", "1.38", "1.38", "1.42", "1.40", "1.42", "1.38", "1.42", "1.40", "1.40", "1.34", "1.47", "1.10", "1.43", "1.41", "1.52", "1.39", "1.33", "1.41", "1.34", "1.36", "1.38", "1.43", "1.43", "1.41", "1.39", "1.39", "1.35", "1.36", "1.09", "1.52", "1.43", "1.38", "1.36", "1.36", "1.38", "1.36", "1.10", "1.40", "1.38", "1.40", "1.35", "1.12", "1.36", "1.36", "1.04", "1.37", "1.46", "1.42", "1.38", "1.39", "1.05", "1.48", "1.39", "1.43", "1.39", "1.36", "1.37", "1.43", "1.41", "1.38", "1.36", "1.38", "1.37", "1.36", "1.38", "1.37", "1.40", "1.40", "1.38", "1.05", "1.39", "1.37", "1.37", "1.35", "1.35", "1.40", "1.32", "1.36", "1.33", "1.36", "1.35", "1.36", "1.49", "1.40", "1.38", "1.41", "1.42", "1.37", "1.40", "1.36", "1.37", "1.37", "1.36", "1.37", "1.38", "1.36", "1.42", "1.39", "1.34", "1.37", "1.30", "1.38", "1.32", "1.38", "1.39", "1.35", "1.36", "1.37", "1.34", "1.39", "1.39", "1.38", "1.33", "1.31", "1.35", "1.35", "1.36", "1.38", "1.39", "1.38", "1.37", "1.44", "1.36", "1.39", "1.30", "1.37", "1.33", "1.35", "1.35", "1.48", "1.36", "1.45", "1.38", "1.38", "1.37", "1.38", "0.93", "0.92", "1.40", "0.93", "0.92", "1.36", "1.36", "1.40", "1.36", "1.37", "1.05", "1.04", "1.37", "1.40", "1.48"]
var ratioBase = ["H-Clear", "12:1", "13:1", "14:1", "15:1", "16:1", "17:1", "18:1", "19:1", "20:1", "21:1", "22:1", "23:1", "24:1"]
var rnumberBase = ["1/9", "1/12", "1/13", "1/14", "1/15", "1/16", "1/17", "1/18", "1/19", "1/20", "1/21", "1/22", "1/23", "1/24"]
var cdensityBase = ["1.05", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07", "1.07"]
var picker = UIPickerView()
var picker2 = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
picker.dataSource = self
textColor.inputView = picker
picker2.delegate = self
picker2.dataSource = self
textRatio.inputView = picker2
textCdensity.inputView = picker2
self.picker.selectRow(32, inComponent: 0, animated: false)
self.picker2.selectRow(7, inComponent: 0, animated: true)
let toolBar = UIToolbar()
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(doneClicked))
toolBar.setItems([doneButton], animated: false)
textColor.inputAccessoryView = toolBar
textRatio.inputAccessoryView = toolBar
textWeight.inputAccessoryView = toolBar
}
@objc func doneClicked() {
view.endEditing(true)
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView == picker{
return colorBase.count
}else if pickerView == picker2{
return ratioBase.count
}else if pickerView == picker2{
return cdensityBase.count
}
return 1
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == picker{
textDensity.text = outBase[row]
};
if pickerView == picker{
textColor.text = colorBase[row]};
if pickerView == picker2{
textRnumber.text = rnumberBase[row]
};
if pickerView == picker2{
textRatio.text = ratioBase[row]};
if pickerView == picker2{
textCdensity.text = cdensityBase[row]
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == picker{
return colorBase[row]
}else if pickerView == picker2{
return ratioBase[row]
}else if pickerView == picker2{
return cdensityBase[row]
}
return ""
}
答案 0 :(得分:1)
事实证明它并不像rnumberbase数组中的分数。我将它们转换为十进制,它完美地运作。
答案 1 :(得分:0)
你将textColor字段设置为像“E-110 Midnight”这样的文本字符串,然后你尝试将该值转换为整数,所以我猜你的Calculate方法a总是为零,可能是b,c和d为好。您需要区分要显示的值和要计算的值。
我建议您为数据使用结构或元组,以便更轻松地处理描述和值。这也可以避免你不得不为5个数组进行选择。