如何在不使用情节提要的情况下获取视图控制器的 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 获取我的视图控制器的实例