如何在不使用情节提要的情况下获取视图控制器的 NibName

Posted

技术标签:

【中文标题】如何在不使用情节提要的情况下获取视图控制器的 NibName【英文标题】:how can i get NibName of viewcontroller while not using storyboard 【发布时间】:2017-06-27 07:43:07 【问题描述】:

我正在尝试使用来自this pre-built page menu pod from github 的 pod 在我的应用中实现页面菜单

说明书上写着:

var controller : UIViewController = UIViewController(nibName:"controllerNibName", bundle: nil)
controller.title = "SAMPLE TITLE"
controllerArray.append(controller)

一切都设置好了,但我只需要“controllerNibName”。我没有使用故事板。并且还没有使用 viewController 制作任何 xib 文件。那么我怎样才能获得 viewController 的 NibName。

【问题讨论】:

它是一个xib文件名,你已经完成了与那个UIViewController相关的所有UI 是使用 viewController @subramaniam 创建 xib 文件所必需的 没有必要,如果你不是使用 xib 创建 UI 则不需要 检查我的答案。 let pageOne = PageOne() 即使你有 xib,它也会选择,如果没有,它会创建一个不引用任何 xib 的新的 没有xib你将如何创建UI? 【参考方案1】:

controllerNibName 字符串是您的XIB 的文件名。您在哪里完成了与您的UIViewController 相关的所有 UI。

如果你的viewController类名和xib文件名相同,那么你可以直接分配UIViewController。它会自动选择xib。

假设 UIViewController 名称是 PageOne & xib 名称也应该是 PageOne.xib

let pageOne = PageOne()

如果您的 xib 名称与您的视图控制器名称不同

例如:Page1.xib

let pageOne = PageOne(nibName:"Page1", bundle: nil)

【讨论】:

【参考方案2】:

有一个很好的方法来获取 nib 的名称(如果 nib 名称等于控制器名称,即 MyViewController.xib 和 MyViewController):

let controllerName = String(describing: MyViewController.self)
var controller : MyViewController = MyViewController(nibName:controllerName, bundle: nil)

【讨论】:

感谢@eridana,它工作得很好。但是你能不能给我一个不创建 xib 文件的方法,因为我已经以编程方式制作了所有 UI。 @PrateekRegar 我发现了这个问题,也许这就是你需要的:***.com/q/37526411/2908082

以上是关于如何在不使用情节提要的情况下获取视图控制器的 NibName的主要内容,如果未能解决你的问题,请参考以下文章

如何在不显示中间视图的情况下通过多个视图展开

如何以编程方式快速使用情节提要 ID 获取当前视图控制器(当前正在呈现)?

如何在没有情节提要的情况下设置 ViewController 的框架

如何从应用程序委托、情节提要、iOS6 获取我的视图控制器的实例

如何在不使用尺寸等级和情节提要的情况下创建适用于 iPhone 4 到 iPhone 6 Plus 的 XIB?

使用 Swift 在没有情节提要的情况下展开 segue