好的,所以我会提前道歉,但我是Swift和iOS开发的完整菜鸟,但我真的想学习编码。我已经在线阅读了不少教程等等,但似乎无法找到我遇到的这个问题的答案。必须有一个简单的解决方案,因为它似乎不是一个非常困难的问题,但谷歌不是我的朋友找到答案。我不想使用故事板,因为我想学习真正的肉和土豆。我正在使用OS X 10.11,Xcode 7,为iOS 9编写应用程序,通用。
所以,我设计了一个日历应用程序,它具有相当独特的显示,UI和功能,而不是其他基于网格的日历。我有一个UIView,我想成为一个容器来保存我需要的其他视图并将它们拉入容器视图。我拥有的文件包括ViewController.swift和我的自定义文件ContainerView.swift HeaderView.swift,CalView.swift和CalDetailView.swift。我为每个文件设置了类,HeaderView是一个基本的UIView,CalView是一个水平的UIScrollView,可以为不同的日历视图(如周,月,日,年等)分页。 CalDetailView也是一个水平UIScrollView,它将向用户显示事件详细信息,也是用户编辑,添加事件等的主要操作区域。
目前,ContainerView加载得很好,我可以做任何我想做的事情,并且可以创建这些其他子视图而不会出现问题,但只能在ContainerView文件中。我希望将这些区域分成不同的文件以保证我的理智,并将它们作为带有AutoLayout的子视图和所有内容添加到ContainerView UIView中,就像我能够在ContainerView文件中做的那样,但它会是巨大的,我不想要这一点。
我认为正确的方法是在主VC的viewDidLoad()方法下添加这些子视图并在VC文件中创建我的AutoLayout约束,然后我只想在ContainerView文件中加载我的子视图并构建屏幕。单独的子视图文件将包含我的所有绘图代码和触摸事件等等。
这是我想要完成的简单线框... 整个窗口是ContainerView.swift,其余是ContainerView的子视图。
答案 0 :(得分:0)
这个问题有点开放和非具体,但是现在让我们忽略这一点(这是你的第一次),将来请更具体一点,这是一种反应教程可能会更好提供。你将有足够的事情,不用避免故事板 - 随意使用它们。
无论如何都没关系。
在主视图控制器中给出一个UIView子类MyView:
override func viewDidLoad() {
super.viewDidLoad()
....
let myView = MyView()
self.view.addSubView(myView)
myView.frame = ... OR <SET CONSTRAINTS>
....
}
基本上,您将初始化这些视图子类并根据需要添加它们。