将多个单独的 Swift 文件加载到主容器视图中
Load Multiple Separate Swift Files into Main Container View
好的,所以我会提前道歉,但我是 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 文件中。为了我的理智,我想将这些区域分成不同的文件,并将它们添加到 ContainerView UIView as subViews with AutoLayout 和所有内容,就像我能够在 ContainerView 文件中做的一样,但它会很大而且我不要那个。
我认为正确的方法是在主 VC 的 viewDidLoad() 方法下添加这些子视图,并在 VC 文件中创建我的 AutoLayout 约束,然后我只想在 ContainerView 文件中加载我的子视图并构建屏幕。单独的子视图文件将包含我所有的绘图代码和触摸事件等等。
这是我想要完成的事情的简单线框图...
整个window就是ContainerView.swift剩下的,ContainerView的subViews。
这个问题有点开放和不具体,但我们暂时忽略它(这是你第一次),以后请更具体,这是教程可能更好地提供的回复。您将有足够的工作要做,无需回避 Storyboards - 请随意使用它们。
无论如何都可以。
给定一个 UIView 子类 MyView,在您的主视图控制器中:
override func viewDidLoad() {
super.viewDidLoad()
....
let myView = MyView()
self.view.addSubView(myView)
myView.frame = ... OR <SET CONSTRAINTS>
....
}
基本上,您将初始化那些视图子类并根据需要添加它们。
好的,所以我会提前道歉,但我是 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 文件中。为了我的理智,我想将这些区域分成不同的文件,并将它们添加到 ContainerView UIView as subViews with AutoLayout 和所有内容,就像我能够在 ContainerView 文件中做的一样,但它会很大而且我不要那个。
我认为正确的方法是在主 VC 的 viewDidLoad() 方法下添加这些子视图,并在 VC 文件中创建我的 AutoLayout 约束,然后我只想在 ContainerView 文件中加载我的子视图并构建屏幕。单独的子视图文件将包含我所有的绘图代码和触摸事件等等。
这是我想要完成的事情的简单线框图... 整个window就是ContainerView.swift剩下的,ContainerView的subViews。
这个问题有点开放和不具体,但我们暂时忽略它(这是你第一次),以后请更具体,这是教程可能更好地提供的回复。您将有足够的工作要做,无需回避 Storyboards - 请随意使用它们。
无论如何都可以。
给定一个 UIView 子类 MyView,在您的主视图控制器中:
override func viewDidLoad() {
super.viewDidLoad()
....
let myView = MyView()
self.view.addSubView(myView)
myView.frame = ... OR <SET CONSTRAINTS>
....
}
基本上,您将初始化那些视图子类并根据需要添加它们。