我正在尝试初始化此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!"
}
}
}
答案 0 :(得分:0)
正在从情节提要中实例化您的控制器。在控制器调用std::vector
期间,可以安全地配置初始视图,即:
viewDidLoad
答案 1 :(得分:0)
初始化取决于两个条件。
init
,您的VC将具有默认的初始化程序。确保所有属性都具有默认值,或者它们是可选的。xib
或只是通过编程方式创建视图,则可以使用自定义便捷初始化程序,以这种方式传递一些额外的数据。class MyViewController: ViewController {
var answer: Int
convenience init(answer: Int) {
self.init()
self.answer = answer
// Do other setup
}
}