Так что я довольно новичок в Swift.Я строю калькулятор чаевых в Swift, и я нашел учебник в Интернете и изменил его.Однако это было учебное пособие по Swift 3, поэтому я не знаю, насколько хорошо оно переводится на Swift 4.2 из Swift 3 и последней версии iOS, но оно работало, пока я не попытался добавить функцию, которая позволила бы мне разделить счет.Теперь все приложение просто дает мне белый экран и без ошибок времени выполнения.
Я попытался реализовать функцию разделения счета двумя способами, включая использование регистра переключателя (в настоящее время в коде) и запрос пользователячтобы ввести число, и ни один из способов не сработал.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var billAmountField: UITextField!
@IBOutlet weak var tipSelector: UISegmentedControl!
@IBOutlet weak var userTipAmountField: UITextField!
@IBOutlet weak var tipAmountField: UITextField!
@IBOutlet weak var totalAmountField: UITextField!
@IBOutlet weak var userSplitSelector: UISegmentedControl!
@IBOutlet weak var totalSplitAmount: UITextField!
@IBOutlet weak var numSplitLabel: UILabel!
@IBAction func calculateTip(_ sender: AnyObject) {
if let billAmount = Double(billAmountField.text!) {
var tipPercentage = 0.0
var split = 1.0
switch tipSelector.selectedSegmentIndex {
case 0:
tipPercentage = 0.15
case 1:
tipPercentage = 0.18
case 2:
tipPercentage = 0.20
case 3:
userTipAmountField.isUserInteractionEnabled = true
if let userTipAmount = Double(userTipAmountField.text!){
tipPercentage = userTipAmount / 100
}
default:
break
}
switch userSplitSelector.selectedSegmentIndex {
case 0:
if split >= 2 {
split -= 1
}
let splitString = String(split)
numSplitLabel.text = splitString
case 1:
split += 1
let splitString = String(split)
numSplitLabel.text = splitString
default:
break
}
let roundedBillAmount = round(100 * billAmount) / 100
let tipAmount = roundedBillAmount * tipPercentage
let roundedTipAmount = round(100*tipAmount)/100
let totalAmount = roundedBillAmount + roundedTipAmount
let totalSplitAmt = totalAmount / split
if (!billAmountField.isEditing) {
billAmountField.text = String(format: "%.2f", roundedBillAmount)
}
tipAmountField.text = String(format: "%.2f", roundedTipAmount)
totalAmountField.text = String(format: "%.2f", totalAmount)
totalSplitAmount.text = String(format: "%.2f", totalSplitAmt)
} else {
//show error
billAmountField.text = ""
tipAmountField.text = ""
totalAmountField.text = ""
totalSplitAmount.text = ""
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Я делаю этот проект на виртуальной машине, если это имеет значение.
Вот мой раскадровка
Буду очень признателен за любые предложения по исправлению!