Re: [請益] 如何push Framework裡的viewcontroller

看板MacDev作者 (米米米米米奇)時間6年前 (2019/01/20 04:01), 編輯推噓1(1012)
留言13則, 3人參與, 6年前最新討論串2/3 (看更多)
※ 引述《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://www.ptt.cc/bbs/MacDev/M.1547928115.A.871.html

01/20 04:03, 6年前 , 1F
手機發文 排版請見諒
01/20 04:03, 1F

01/20 04:49, 6年前 , 2F
不建議使用keyWindow去present畫面,因為有些UI元件會置
01/20 04:49, 2F

01/20 04:49, 6年前 , 3F
換原本的keyWindow,會導致階層不正確
01/20 04:49, 3F

01/21 03:09, 6年前 , 4F
確實不是好方法 但我也不是iOS專長,只是當初這樣做能
01/21 03:09, 4F

01/21 03:09, 6年前 , 5F
解決我的需求 所以來拋磚引玉一下
01/21 03:09, 5F

01/21 03:09, 6年前 , 6F
通常這樣做我還會搭配 [keyWindow makeKeyAndVisibl
01/21 03:09, 6F

01/21 03:09, 6年前 , 7F
e]; 來服用,至少自己的專案跑起來都頭好壯壯,可能是
01/21 03:09, 7F

01/21 03:09, 6年前 , 8F
因為我製作的framework主要會使用的都是UI相對單純的
01/21 03:09, 8F

01/21 03:09, 6年前 , 9F
遊戲引擎專案,Unity 3D Cocos2d 之類的(他們都只有
01/21 03:09, 9F

01/21 03:09, 6年前 , 10F
一個OpenGL畫布,其他都是引擎內部處理)
01/21 03:09, 10F

01/21 03:10, 6年前 , 11F
如果要嚴謹一點的話 其實好想在framework的接口開一個
01/21 03:10, 11F

01/21 03:10, 6年前 , 12F
參數把當前的viewcontroller傳入就可以了?
01/21 03:10, 12F

01/24 17:04, 6年前 , 13F
感謝回答~~
01/24 17:04, 13F
文章代碼(AID): #1SGu8pXn (MacDev)
文章代碼(AID): #1SGu8pXn (MacDev)