如何展示我的可可触摸框架故事板屏幕?

jus*_*ust 7 iphone cocoa-touch ios swift

我用故事板创建了一个简单的Cocoa触摸框架.在我的框架中,我有一个MainViewController.swift视图控制器.我创建了一个新的单一视图项目,导入我的框架并尝试加载我的框架viewcontroller,但我得到了黑屏.我不知道为什么.

我尝试使用以下代码加载框架:

let frameworkScreen : UIViewController = MainViewController()
    self.presentViewController(frameworkScreen, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

mat*_*att 32

您需要通过从框架中的storyboard实例化来加载视图控制器.

这是如何做.首先是一些初始条件:

  • 假设您的框架名为Coolness.

  • 假设你的框架的故事板叫做CoolnessStoryboard.storyboard.

  • 假设您的框架有一个public名为CoolnessViewController 的类.

  • 假设CoolnessStoryboard有一个场景,其视图控制器是CoolnessViewController,这是它的初始视图控制器.

然后在您的主代码中,您将会import Coolness从故事板中呈现CoolnessViewController,您会说:

let s = UIStoryboard (
    name: "CoolnessStoryboard", bundle: NSBundle(forClass: CoolnessViewController.self)
)
let vc = s.instantiateInitialViewController() as! UIViewController
self.presentViewController(vc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

请注意这里的策略.从目标向后工作.我们需要故事板中的CoolnessViewController实例.为此,我们需要对该故事板的引用.为此,我们需要确定故事板.怎么样?我们可以通过名称和它所在的包来识别它.但是我们如何识别该包呢?我们可以通过该捆绑中的类来识别捆绑.我们这样一个类,因为我们已经导入了框架(import Coolness)和类public(所以我们可以说它).


rcm*_*ark 8

我有同样的问题.这是我经过一些研究后解决的问题:

1 - 我有一个名为"Messenger.framework"的框架

2 - 在里面,我有一个名为"Messenger.Storyboard"的故事板文件

3-我的初始视图控制器是一个带有rootViewController和我的ChatController的UINavigationController.

这就是我的框架聊天UIViewController的现状:

- (void)presentChatController
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Messenger"
                                                         bundle:[NSBundle bundleForClass:ChatController.class]];

    ChatController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Chat"];
    [self.navigationController pushViewController:controller animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你.