簡體   English   中英

iOS如何從框架啟動ViewController

[英]iOS how to start a viewcontroller from framework

我已經成功創建了我的私有框架。 沒有錯誤。 我現在已經創建了一個項目,我想要一個簡單的東西,但是我沒有頭緒。 以下是我想要的

我想啟動Framework視圖控制器。 您可以認為這是整個應用程序。 我想啟動它的第一個視圖控制器。 然后按照業務邏輯進行應用程序流程。 我想在用戶退出Framework主視圖控制器時退出應用程序。 實際上,它是完整的應用程序,但是我決定為不同的客戶端構建框架,因為不同的客戶端只需要進行少量修改,但是我不知道應該怎么做。

這是我嘗試在Client項目中啟動第一個視圖控制器的方法,但是它無法識別該控制器。

 @IBAction func onClickBtnStartOver(_ sender: Any)
 {
     let storyBoard : UIStoryboard = UIStoryboard(name: "Storyboard", bundle:nil)            
     let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("idFrameworkVC") as FwViewController
     self.presentViewController(nextViewController, animated:true, completion:nil)
 }

它給我類似“ 使用未聲明的類型'FwViewController'的錯誤

所以我應該怎么做才能啟動框架的第一個viewcontroller。

注意:我在一個Storyboard中有ViewController,即Framework內部的Storyboard。

嘗試這個:

          UIApplication.shared.keyWindow?.rootViewController =  UIStoryboard(name: "yy", bundle: nil).instantiateInitialViewController()

在您的框架中聲明一個打開的func來打開第一個viewController:

open func presentFirstViewControllerOn(_ viewController:UIViewController) {
    let storyBoard : UIStoryboard = UIStoryboard(name: "Storyboard", bundle:nil)
    let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("idFrameworkVC") as FwViewController
    viewController.presentViewController(nextViewController, animated:true, completion:nil)
}

然后從客戶端應用的VC調用此方法。 確定哪個是第一個VC(如果需要)是框架的責任,而不是您的客戶端應用程序的責任。

如果一切設置都很好,那么您可能尚未將框架導入其中。 這是非常重要的部分。 仔細檢查是否已將Public聲明為您的框架VC。 然后在它之后,您需要在您的方法中啟動它。

我建議您查看選定的答案。 這就是你的情況

PS:不要忘記對所選答案進行評論,因為有關於崩潰的討論。 我懷疑您是否會遇到這些問題,但是,如果您遇到任何崩潰,請在回答中使用該注釋來解決問題

使用您的框架包標識符

 let frameworkBundle = Bundle(identifier: "your framework bundle identifier")
 let storyboard = UIStoryboard(name: "your framework storyboard name", bundle: frameworkBundle)
 let mas = storyboard.instantiateInitialViewController() as! UIViewController
 self.present(mas, animated: true, completion: nil)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM