[英]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.