【问题标题】:Loading Swift Main Storyboard and View Controller from Framework从框架加载 Swift Main Storyboard 和 View Controller
【发布时间】:2016-05-27 18:37:13
【问题描述】:

我想让我的 Swift 项目从框架而不是项目本身加载它的主要故事板和视图控制器。

这可能吗?

欢迎大家帮忙。

【问题讨论】:

    标签: swift uistoryboard viewcontroller


    【解决方案1】:

    我相信您早就解决了您的问题,但请在此处发布答案,以防它对从 Google 发现它的其他人有用。

    您可以通过从导航器中选择您的项目、从左侧面板中选择应用程序目标并进入“信息”选项卡来指定另一个故事板作为主故事板。 “主故事板基本文件名”有一个设置。

    对于您的具体问题,这可能不是您想要的。相反,打开应用程序的 Main.storyboard,突出显示视图控制器,打开 Identity Inspector,然后将 Class 设置为框架中的类。为了让它适用于我的项目,我实际上必须删除现有的 Main.storyboard,创建一个新的,在其上放置一个 View Controller,然后首先从 Attributes Inspector 中设置“Is Initial View Controller”。

    【讨论】:

      【解决方案2】:

      更新答案:

      假设您有一个名为 myLogin 的框架,其中包含一个 ID 为“frameworkStoryboard”的故事板和一个 ID 为“login”的视图控制器。 你会

      import myLogin
      

      加载你的框架,然后放入你的代码

          let storyBoard = NSStoryboard(name: "frameworkStoryboard", bundle: nil) as NSStoryboard
          let loginViewController = storyBoard.instantiateControllerWithIdentifier("login") as! NSViewController
          view.window?.contentViewController = loginViewController
      

      加载您的故事板和相应的视图。

      基本上,您可以为两个名称(故事板和控制器)使用变量,而不仅仅是写下来。 该示例适用于 osx,iOS 的唯一区别是使用 UIViewController 而不是 NSViewController,情节提要也是如此,您也不会在 iOS 上以相同的方式呈现控制器(此示例将切换当前窗口内容视图而不是呈现它。

      【讨论】:

      • 该代码会去哪里?目前我在生成的代码中没有看到加载主故事板和视图控制器的任何地方。这样做的理由?我有 10 个应用程序,它们都具有相同的主屏幕和相同的行为。将此代码放在框架中会很好,这样任何更改都会影响到许多项目。否则我将不得不在所有 10 个项目中进行相同的更改。感谢您的回复。
      • 随您的便。加载主故事板是什么意思?它是一个对象而不是一个视图。如果他们有完全相同的屏幕和相同的行为你不想把东西放在主故事板中,你想要的是用他自己的故事板创建一个协议(实际上是一个委托),语法将是相同的,只是名称将改变。
      • 如果一个项目中有多个 Story board 和 ViewControllers,如何指定 App 启动时加载哪些内容?
      • 我认为您可能对 OOC 编程的工作原理有一个错误的认识。除了实例化一个类时,您不指定任何内容,而且您不想尝试从框架中加载外部对象,这不是您应该做的事情,在以前的 com 上告诉过您
      • 让我更清楚地集中我的问题...我需要采取哪些步骤来确保当我的应用程序加载时,使用框架(而不是项目)中的情节提要和视图控制器?我是 Swoft 和 XCode 的新手,因此您能提供的任何帮助将不胜感激。
      猜你喜欢
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      相关资源
      最近更新 更多