UIStoryBoard ViewControllers与“Vanilla”ViewControllers有什么不同?

时间:2018-02-20 05:12:46

标签: ios swift uiviewcontroller

假设我有两节课。

1)class ViewControllerA: UIViewController
2)class ViewControllerB: UIViewController

另外,我的Main.storyboard文件中有2个场景

1)绿色背景附加到ViewControllerA并带有1个按钮的场景
2)具有附加到ViewControllerB

的蓝色背景的场景

我实例化B

之间有区别吗?
let newScene = ViewControllerB()
self.present(newScene, animated: true, completion: nil)

而不是使用故事板帮助方法

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newScene = storyBoard.instantiateViewController(withIdentifier: "ViewControllerB") as! ViewControllerB
self.present(newScene, animated: true, completion: nil)

如果存在差异,为什么它们不同?

1 个答案:

答案 0 :(得分:1)

  

我实例化B而不是使用之间是否存在差异   故事板辅助方法。

<强>绝对

故事板为我们做了很多很棒的事情(如果设置正确的话)。但是,如果您自己实例化视图控制器,则必须自己设置所有内容。这意味着,您必须实例化视图,将控制事件连接到方法,配置UI的外观等等...所有代码。故事板将所有代码转换为资源文件,并为我们完成大部分工作。

例如:

在情节提要中,您可以将控件中的事件连接到视图控制器中标有@IBAction的方法。但如果你不使用故事板,那么你必须自己连接控制事件:

self.myButton.addTarget(self, action: #selector(buttonTapped:), for: .touchUpInside)