作者sableangle (米米米米米奇)
看板MacDev
标题Re: [请益] 如何push Framework里的viewcontroller
时间Sun Jan 20 04:01:52 2019
※ 引述《fbifxxkma (超棒Der)》之铭言:
: 我自制一个framework
: 里面有一个viewcontroller.swift
: 还有他的storyboard 并设定他俩的对应关系
: 然後打包成framework
: ------
: 接着 我新开一个 project
: import 刚刚那个自制的 framework
: 我要如何push 出 framework里面的画面(viewcontroller)呢?
swift的我是不会啦
但是objective-c的我实作过 可以给你抛砖引玉一下
首先找到整个 App 的 UIWondow
大概像这样,这样你就可以在framework里 去的 实际runtime时的UIWindow
UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
然後从 Bundle 里寻找需要的资源,大概像这样
这个bundle你要自己包,要包的东西大概就图片啊 Storyboard之类的
NSString* mainBundlePath = [[NSBundle mainBundle] resourcePath];
NSString* frameworkBundlePath = [mainBundlePath stringByAppendingPathComponent:@"YourBundle.bundle"];
接着你就可以从Bundle读到你的StoryBoard了
yourViewController = [[UIStoryboard storyboardWithName:@"YourStoryBoardName" bundle:[NSBundle bundleWithPath:frameworkBundlePath]] instantiateViewControllerWithIdentifier:@"Nav"];
最後你就可以从UIWindow拿到 rootviewcontroller 有两个 viewController基本上就可以为所欲为了
这是一个简单的范例
[keyWindow.rootViewController.view addSubview: yourViewController.view];
大概是这样啦
-----
Sent from JPTT on my iPhone
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.42.120.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1547928115.A.871.html
1F:→ sableangle: 手机发文 排版请见谅 01/20 04:03
2F:→ darktt: 不建议使用keyWindow去present画面,因为有些UI元件会置 01/20 04:49
3F:→ darktt: 换原本的keyWindow,会导致阶层不正确 01/20 04:49
4F:→ sableangle: 确实不是好方法 但我也不是iOS专长,只是当初这样做能 01/21 03:09
5F:→ sableangle: 解决我的需求 所以来抛砖引玉一下 01/21 03:09
6F:→ sableangle: 通常这样做我还会搭配 [keyWindow makeKeyAndVisibl 01/21 03:09
7F:→ sableangle: e]; 来服用,至少自己的专案跑起来都头好壮壮,可能是 01/21 03:09
8F:→ sableangle: 因为我制作的framework主要会使用的都是UI相对单纯的 01/21 03:09
9F:→ sableangle: 游戏引擎专案,Unity 3D Cocos2d 之类的(他们都只有 01/21 03:09
10F:→ sableangle: 一个OpenGL画布,其他都是引擎内部处理) 01/21 03:09
11F:→ sableangle: 如果要严谨一点的话 其实好想在framework的接口开一个 01/21 03:10
12F:→ sableangle: 参数把当前的viewcontroller传入就可以了? 01/21 03:10
13F:推 fbifxxkma: 感谢回答~~ 01/24 17:04