我已经实现了一个SDK,该SDK将在示例应用程序中使用。该SDK包含10个带有navigationController的viewControllers。在示例应用程序中,我将在第3个视图控制器上实例化SDK。进入SDK后,如果用户完成了任务,我想转到示例应用程序的第3个屏幕,在该屏幕上对其进行实例化。
我在SDK中有一个委托函数,只有用户可以加载SDK,在该函数中,我有一个输入参数viewController,这是启动SDK的当前控制器。我已经保存了该控制器名称,并希望通过检查isKind函数从导航堆栈中移至该控制器,但是会引发错误 无法将类型'testDemo.ViewController'(0x10029bbf0)的值强制转换为'__C.UIViewController.Type'(0x1072690f8)。
func popBack<T: UIViewController>(toControllerType: T.Type) {
if var viewControllers: [UIViewController] = self.navigationController?.viewControllers {
viewControllers = viewControllers.reversed()
for currentViewController in viewControllers {
if currentViewController .isKind(of: toControllerType) {
self.navigationController?.popToViewController(currentViewController, animated: true)
break
}
}
}
}
let dat1 = UserDefaults.standard.value(forKey: "parentSDKController") as? Data
if let dat = dat1 {
let vc = NSKeyedUnarchiver.unarchiveObject(with: dat)
popBack(toControllerType: ViewController.self)
}
我的委托函数 +(Controller *)loadWithStartScreen:(BOOL)startScreen和ConfirmationScreen:(BOOL)confirmScreen和ParentViewController:(UIViewController *)vc
我将父viewController保存在UserDefaults中,并在SDK和 [[NSUserDefaults standardUserDefaults] setValue:[NSKeyedArchiver archivedDataWithRootObject:vc] forKey:@“ parentSDKController”];
我想导航用户以示例应用程序,在其中使用同类应用程序实例化SDK。
我收到以下错误 无法将类型'testDemo.ViewController'(0x10029bbf0)的值强制转换为'__C.UIViewController.Type'(0x1072690f8)。
有人可以帮助解决此问题吗?