为什么我不能使用类似的方法创建视图控制器对象
resultVC = ResultViewController()
而不是以下方式。
let storyboard = UIStoryboard (name: "Main", bundle: nil)
let resultVC = storyboard.instantiateViewController(withIdentifier: "ResultViewController") as! ResultViewController
// Communicate the match
resultVC.match = self.match
self.navigationController?.pushViewController(resultVC, animated: true)
答案 0 :(得分:1)
一切都取决于你的逻辑。您可以通过三种基本方式创建UIViewController
。
故事板:您有故事板,设计您的VC并通过故事板进行实例化。 在这种情况下,您必须告诉系统您的VC具有哪些故事板以及它的ID。 正如您在上面的代码中所做的那样。
Xib / Nib:与故事板一样,您可以使用xib/nib
设计VC。这里只需要通过xib名称分配VC。
以编程方式:在这里,您不需要任何类型的xib / storyboard。你必须通过代码完成所有事情。您的VC设计将在您的VC文件中。在这里你只需要分配该文件。
差异: Which is more efficient way? StoryBoard or XIB?
如果你还不清楚,那就问。
答案 1 :(得分:0)
使用resultVC = ResultViewController()
将创建一个ResultViewController类型的视图控制器,但没有任何指向你的故事板的链接,这对你没有任何用处(如果不获取这些链接,你为什么要使用故事板?) 。您需要从故事板中实例化它以获得这些链接。
答案 2 :(得分:0)
您可以使用此方法创建所需的视图控制器对象 在您的应用程序中以编程方式操作和呈现。之前 您必须使用此方法来检索视图控制器 在Interface中使用适当的标识符字符串显式标记它 助洗剂。
因此,您并不只是分配您的课程,而是将您的课程与Interface Builder
中的专用屏幕相关联。
无论如何,您可以按照自己想要的resultVC = ResultViewController()
创建控制器,但是您应该在代码中创建所有用户界面,而不是使用Interface Builder