swift - 如何正确地初始化()一个快速视图控制器?
问题描述
我正在尝试初始化这个 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!"
}
}
}
解决方案
您的控制器正在从情节提要中实例化。配置初始视图的安全位置是在控制器调用 期间viewDidLoad
,即:
override func viewDidLoad() {
super.viewDidLoad()
// configure your views and subviews here
}
推荐阅读
- ionic-framework - Flutterwave 与 Ionic 4 的集成
- html - 如何关闭以前的 EventSource
- c++ - 为什么可以使用指针创建新结构,但不能以相同的方式创建双精度结构?
- java - 导入 Maven 项目后出现 TestNG 错误
- java - Tomcat 不提供简单的 HTML 页面 (HTTP 404)
- spring-boot - 使用 Spring-Config Cloud Server 在自定义文件夹中加载多个基于 Profile 的属性
- r - 在 .rmd 文件中编译 TeX 的错误以创建 .html
- xamarin - Xmrain 表单应用程序部署失败
- java - 如何修复 ORA-01008:并非所有变量都绑定
- android - 'ng2-pdf-viewer' 不适用于带有 Ionic 3 的 iOS 中的本地 pdf