我如何加载viewController而不是xib文件

时间:2016-03-24 04:44:26

标签: xcode swift swift2

我希望在用户点击它时会创建通知按钮,以便为他显示viewcontroller或其他东西

我找到了这个图书馆

https://github.com/lucaslt89/PopupContainer

您可以从xib文件nib文件和仅UIView

实现的主要问题

是否可以从主故事板中加载Controller?

这是代码

@IBAction func showFromXibButtonPressed(sender: AnyObject) {
    let xibView = NSBundle.mainBundle().loadNibNamed("XibPopup", owner: nil, options: nil)[0] as! XibPopup
    PopupContainer.generatePopupWithView(xibView).show()
}

2 个答案:

答案 0 :(得分:2)

您可以通过传递可从故事板获取的viewcontroller视图来实现。

实施例

@IBAction func showFromXibButtonPressed(sender: AnyObject) {
    let storyboard = UIStoryboard(name: "StoryboardName", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("myViewController") as! UIViewController
    PopupContainer.generatePopupWithView(vc.view).show()
}

请在故事板中指定一个合适的ViewController标识符,并使用正确的storybaord名称在代码中更新相同的

通过检查Hunter的格式

,根据问题要求更新了代码

答案 1 :(得分:1)

假设您的故事板被命名为“Main”,并且您有一个初始视图控制器,这将从该控制器加载视图:

@IBAction func showFromXibButtonPressed(sender: AnyObject) {
    let controller = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
    PopupContainer.generatePopupWithView(controller!.view).show()
}

注意,最佳做法是将IBAction的名称更改为showFromViewControllerButtonPressed,但上述名称将起作用。