【发布时间】:2014-12-16 02:24:32
【问题描述】:
我正在尝试了解 iOS 开发(Swift + Xcode 6),并且我正在尝试弄清楚我在 Interface Builder 中所做的事情与我的代码之间的关系。
我所做的是创建PageViewController : UIPageViewController,它在其viewDidLoad 方法中调用setViewControllers 来添加单个视图控制器,即Page11ViewController : UIViewController 的一个实例。
感谢recent question 的有用回答,我现在知道PageViewController 和Page1ViewController 已成功创建。但是,我正在尝试在 IB 中设计Page1ViewController,而呈现的内容并不能反映我在 IB 中所做的工作。在我的故事板中,我有以下内容:
所以“Page 1 View Controller Scene”包含一个包含标签的视图(“Page 1”)。我通过在该视图控制器的 Identity Inspector 中设置其类,使“Page 1 View Controller”成为Page1ViewController 的一个实例:
但是当我运行应用程序时,我看不到带有“第 1 页”标签的白色视图;相反,我看到一个空白的红色视图。为什么是红色?因为我这样做了:
class Page1ViewController : UIViewController {
@IBOutlet var mainView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.redColor()
println("Page 1 loaded")
println("Subviews: \(view.subviews.count)")
}
}
所以我知道正在执行代码,并且正在那里设置背景...打印出的子视图计数为 0...所以我知道我在 IB Storyboard 中构建的视图不是实际绘制的视图。
这是来自PageViewController 的代码,它添加了Page1ViewController:
class PageViewController : UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
println("Page view controller loaded")
let page1vc = Page1ViewController()
setViewControllers([page1vc],
direction: UIPageViewControllerNavigationDirection.Forward,
animated: true, completion: nil)
}
}
如何将我在 IB 中创建的视图附加到代码中?
【问题讨论】:
-
如果您向下切换黄色“页面 1 视图控制器”下的箭头,您应该会看到一个 UIView 实例。这将自动连接到视图控制器的视图属性。您不需要 UIView IBOutlet。您能否显示实例化第 1 页视图控制器并将其添加到您的页面视图控制器的代码?
-
用
PageViewController代码更新了我的问题。是的,我在 Storyboard 的“Page 1 View Controller”下看到了UIView实例。