Ios 类实例上的问题

Ios 类实例上的问题,ios,swift,Ios,Swift,我的目的是当按下ViewController 2中的按钮时,屏幕将被关闭,我将用UIColor/UIImage填充我的学员,对吗?确定,然后在视图关闭后,视图控制器1将背景色设置为红色。然而,当我试图在ViewController 1中实例化“Escolha VC”时,我遇到了麻烦。我将在上面发布这两个类: 视图控制器1 我做错了什么 ViewController 2 初始化在Swift中是一个非常广泛的主题。查看有关该主题的完整解释。但是作为一个简短的总结,您只需要调用任何类型(类或结构)的i

我的目的是当按下ViewController 2中的按钮时,屏幕将被关闭,我将用UIColor/UIImage填充我的学员,对吗?确定,然后在视图关闭后,视图控制器1将背景色设置为红色。然而,当我试图在ViewController 1中实例化“Escolha VC”时,我遇到了麻烦。我将在上面发布这两个类:

视图控制器1

我做错了什么

ViewController 2


初始化在Swift中是一个非常广泛的主题。查看有关该主题的完整解释。但是作为一个简短的总结,您只需要调用任何类型(类或结构)的
init
中所需的参数。作为示例,请考虑以下类:

class Foo {
  let a: Int
  let b: Int

  init() {
    a = 0
    b = 0
  }

  init(a: Int, b: Int) {
    self.a = a
    self.b = b
  }
}
实例化
Foo
对象有两种方法。通过
let foo=foo()
或类似于
let foo=foo(a:10,b:20)
的方式。它是否是其他类的子类并不重要,比如
UIViewController
子类。它是否包含类型为协议的属性并不重要。除非您的
UIViewController
子类定义了自定义初始值设定项,否则您可以通过以下方式对其进行实例化:

let selectionVC = EscolhaVC()
然后,只需设置任何其他必要的属性:

selectionVC.selectionDelegate = self
这对于任何类型来说都非常简单。问题是类型中的每个属性都必须在实例化时初始化。这意味着非可选类型必须设置其值。这就是我链接的文档的基本内容

编辑

根据您的编辑,这不是关于实例化的问题,而是关于对
EscolhaVC
进行样式化的问题。当您从故事板实例化时,您将获得一个视图控制器,其中包含您在interface builder中定义的所有视图、颜色等。但是,如果要通过初始值设定项实例化视图控制器,则需要自己完成此操作。例如,尝试设置您的
EscolhaVC
的视图背景色,然后执行其他操作,您将看到这一切都很好:

class EscolhaVC: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .red
  }
}

初始化在Swift中是一个非常广泛的主题。查看有关该主题的完整解释。但是作为一个简短的总结,您只需要调用任何类型(类或结构)的
init
中所需的参数。作为示例,请考虑以下类:

class Foo {
  let a: Int
  let b: Int

  init() {
    a = 0
    b = 0
  }

  init(a: Int, b: Int) {
    self.a = a
    self.b = b
  }
}
实例化
Foo
对象有两种方法。通过
let foo=foo()
或类似于
let foo=foo(a:10,b:20)
的方式。它是否是其他类的子类并不重要,比如
UIViewController
子类。它是否包含类型为协议的属性并不重要。除非您的
UIViewController
子类定义了自定义初始值设定项,否则您可以通过以下方式对其进行实例化:

let selectionVC = EscolhaVC()
然后,只需设置任何其他必要的属性:

selectionVC.selectionDelegate = self
这对于任何类型来说都非常简单。问题是类型中的每个属性都必须在实例化时初始化。这意味着非可选类型必须设置其值。这就是我链接的文档的基本内容

编辑

根据您的编辑,这不是关于实例化的问题,而是关于对
EscolhaVC
进行样式化的问题。当您从故事板实例化时,您将获得一个视图控制器,其中包含您在interface builder中定义的所有视图、颜色等。但是,如果要通过初始值设定项实例化视图控制器,则需要自己完成此操作。例如,尝试设置您的
EscolhaVC
的视图背景色,然后执行其他操作,您将看到这一切都很好:

class EscolhaVC: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .red
  }
}

你所说的“遵从委托”是什么意思?你所说的“作为完整代码开发”是什么意思?你有没有一段你正在努力解决的代码示例?你好,Rob。Conform我的意思是like(delegate=self),make as“full code”是一个没有故事板的项目。我的问题是:如何从不同的方式而不是上面的方式实例化ViewController?使用
让vc=ViewControllerType(parameters…
。我不清楚问题是什么。您尝试删除情节提要有什么原因吗?是的,因为我有其他不使用情节提要的项目,如果我在其他类中没有任何参数该怎么办?比如说我有一个协议在里面。我该如何实例化这个类?你说的“符合委托”是什么意思?你说的“作为完整代码开发”是什么意思?你有没有一段你正在努力解决的代码示例?你好,Rob。Conform我的意思是like(delegate=self),make as“full code”是一个没有故事板的项目。我的问题是:如何从不同的方式而不是上面的方式实例化ViewController?使用
让vc=ViewControllerType(parameters…
。我不清楚问题是什么。您尝试删除情节提要有什么原因吗?是的,因为我有其他不使用情节提要的项目,如果我在其他类中没有任何参数该怎么办?比如说我有一个协议在里面。我如何实例化这个类?Hello@Ajefferson。我刚刚更新了代码,让我们看看是否需要澄清我的错误。请检查一下下面好吗?顺便说一句,非常感谢你的回答!当然这实际上不是实例化的问题,而是如何设置
EscolhaVC
视图控制器的问题。例如,尝试在
EscolhaVC
的viewdiload中设置背景色(view.backgroundColor=.red)。我的目的是当按下ViewController 2中的按钮时,屏幕将被关闭,我将填充我的学员,对吗?确定,然后在视图关闭后,ViewController 1将背景颜色设置为红色。然而,当我试图在ViewController 1中实例化“Escolha VC”时,我遇到了麻烦。现在我很困惑。我注意到在EscolhaVC中有动作函数(@IBFunction)。您还需要将目标添加到这些函数programmat中