为什么我的popup视图是空的?
我试图做一个类似于这个popup式视图。 我到目前为止所做的是:
- 打开一个新的单一视图项目。
- 在主视图中添加了一个button。
- 添加了一个名为“popup.xib”的新的xib文件
- 添加了一个名为“PopupViewController.swift”的新的swift文件
- 在身份选项卡上,我将第一个响应者类设置为“PopupViewController”
- 我在popup.xib中放入了一个标签,一个button和一个不同背景颜色的视图。 当然,一切都有约束,应该出现在哪里。
我的代码:
ViewController.swift
import UIKit class ViewController: UIViewController { @IBAction func showPopup(sender: AnyObject) { var x = PopupViewController() x.show(self.view) x.showAnimate() } }
PopupViewController
import UIKit class PopupViewController : UIViewController { func show(tView : UIView) { tView.addSubview(self.view) println("here") self.view.backgroundColor = UIColor.redColor() } func showAnimate() { self.view.transform = CGAffineTransformMakeScale(1.0, 1.0) self.view.alpha = 0.3 } }
结果是:当按下button时,我在视图上得到一个红色的覆盖(因为我添加的视图是红色的,并有30%的不透明度),但新的视图是空的。 没有button,没有标签,没有不同颜色的区域。
我需要做些什么来使popup.xib显示它的元素?
更新
除了Nerkyator
的回答,我错过了文件所有者和主视图之间的连接。 只需右键单击“File的Onwer”,然后从视图拖动到它下面两行的主视图。
您需要手动加载与您的视图关联的xib。 我使用这个扩展( 在这个链接中find )被修改来支持UIViewController,然后在需要时调用它。
extension UIViewController { class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> Self? { return UINib( nibName: nibNamed, bundle: bundle ).instantiateWithOwner(nil, options: nil)[0] as? UIViewController } }
然后
@IBAction func showPopup(sender: AnyObject) { var x = PopupViewController.loadFromNibNamed("popup") //do what you need with x }