Swift 4.2和Xcode 10.1-提示计算器立即崩溃

时间:2019-04-15 04:59:05

标签: ios swift calculator

因此,我是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
    }
}

如果重要的话,我正在虚拟机中执行此项目。

Here is my Storyboard

任何有关修复的建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

从检查器检查给定的控制器为初始控制器。然后检查问题是否存在。

您对视图施加了任何约束吗?

第二个也是最重要的一点是,没有Swift10。Swift的最新版本是5.0!在开发之前,请先阅读基础知识。