【问题标题】:how can i get NibName of viewcontroller while not using storyboard如何在不使用情节提要的情况下获取视图控制器的 NibName
【发布时间】: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?

标签: ios iphone swift3 xcode8 initwithnibname


【解决方案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 我发现了这个问题,也许这就是你需要的:stackoverflow.com/q/37526411/2908082
    猜你喜欢
    • 1970-01-01
    • 2016-09-13
    • 2023-04-03
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多