因此,我是Swift的新手。我在Swift中建立了一个提示计算器,并在网上找到了一个教程并对其进行了修改。但是,它是一个Swift 3教程,所以我不知道它从Swift 3和最新的iOS版本转换到Swift 4.2的程度如何,但是直到我尝试添加一个允许我分担费用的功能之前,它一直有效。现在整个应用程序只给我一个白屏,没有运行时错误。
我已经尝试过两种方式来实现帐单拆分功能,包括使用切换用例(当前在代码中)和要求用户输入数字,而这两种方法似乎都不起作用。
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
}
}
如果重要的话,我正在虚拟机中执行此项目。
任何有关修复的建议将不胜感激!
答案 0 :(得分:0)
从检查器检查给定的控制器为初始控制器。然后检查问题是否存在。
您对视图施加了任何约束吗?
第二个也是最重要的一点是,没有Swift10。Swift的最新版本是5.0!在开发之前,请先阅读基础知识。