首页 > 解决方案 > 如何正确地初始化()一个快速视图控制器?

问题描述

我正在尝试初始化这个 ViewController 类。我没有使用 MVC 设计策略,所以忽略使用的不良约定(如果有的话)。

如何正确初始化此类?

错误:'必需'初始化程序'init(coder :)'必须由'UIViewController'的子类提供

上下文:这是一个计算器应用程序,当按下任何按钮时。它将查找发件人的标题,如果三个变量之一为零,它将存储在该选项中。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBOutlet weak var answerLabel: UILabel!
    //global vars for all funcs
    var selection1: Int? {
        didSet { answerLabel.text = String(selection1!) }
    }
    var selection2: String? {
        didSet { answerLabel.text = selection2! }
    }
    var selection3: Int? {
        didSet { answerLabel.text = String(selection3!) }
    }

    var answer: Int {
        didSet { answerLabel.text = String(answer) }
    }


    init() {


    }



    @IBAction func touchButton(_ sender: UIButton) {
        if selection1 == nil {
            selection1 = Int(sender.currentTitle!)
            print("Selection set in first pos.")
        } else if selection2 == nil {
            selection2 = sender.currentTitle
        } else if selection3 == nil {
            selection3 = Int(sender.currentTitle!)
        } else {
            calculate(firstNum: selection1!, operation: selection2!, secondNum: selection3!)
        }
    }

    func calculate(firstNum: Int, operation: String, secondNum: Int) {
        switch operation {
        case "+":
            answer = firstNum + secondNum
        case "-":
            answer = firstNum - secondNum
        case "x":
            answer = firstNum * secondNum
        case "/":
            answer = firstNum / secondNum
        default:
            answerLabel.text = "Something went wrong!"
        }
    }


}

标签: swiftinitialization

解决方案


您的控制器正在从情节提要中实例化。配置初始视图的安全位置是在控制器调用 期间viewDidLoad,即:

override func viewDidLoad() {
    super.viewDidLoad()
    // configure your views and subviews here
}

推荐阅读