Ios 如何在swift NSCoder中的UIButton内调用UIViewController
我不知道如何在Ios 如何在swift NSCoder中的UIButton内调用UIViewController,ios,iphone,uiviewcontroller,uibutton,Ios,Iphone,Uiviewcontroller,Uibutton,我不知道如何在ui按钮内调用ui视图控制器 我有一个ViewController: import UIKit class ExampleViewController: UIViewController { private var activity: UIActivityIndicatorView private var label: UILabel required init(coder aDecoder: NSCoder) { label = UILabel() acti
ui按钮
内调用ui视图控制器
我有一个ViewController:
import UIKit
class ExampleViewController: UIViewController {
private var activity: UIActivityIndicatorView
private var label: UILabel
required init(coder aDecoder: NSCoder) {
label = UILabel()
activity = UIActivityIndicatorView()
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
在另一个文件中,调用如下所示:
@IBAction func myButton(sender: UIButton) {
var pointer = ExampleViewController(coder: NSCoder)
}
我不知道在这种情况下我应该在NSCoder中写什么。如果我写ExampleViewController(),Xcode会显示一个错误“调用中缺少参数编码器的参数”。
我想我不了解一些东西,但我没有很多经验,所以我会很感激一些关于这方面的信息。
提前感谢 为什么要使用NSCoder初始化控制器?将这两行从
required init(coder-aDecoder:NSCoder)
移到viewDidLoad()
:label=UILabel()activity=UIActivityIndicatorView()
摆脱required init(coder-aDecoder:NSCoder)
。调用视图控制器,比如sovar pointer=ExampleViewController()
BTW,通常speaker Swift不知道指针的概念,除非在非常特殊的情况下是从C或其他派生出来的。因此,我们正在创建ExampleViewController类型的变量,而不是指针。这都归功于这两种类型,但如果我这样写:class ExampleViewController:UIViewController{private var activity:UIActivityIndicatorView private var label:UILabel override func viewDidLoad(){label=UILabel()activity=UIActivityIndicatorView()super.viewDidLoad()}Swift显示一条错误消息“类ExampleViewController没有初始值设定项,如果写入初始值设定项,如必需的init(coder-aDecoder:NSCoder){super.init(coder:aDecoder)}Swift在super.ini调用时显示未初始化的属性self.activity。