从SDK控制器导航示例应用程序控制器

时间:2019-07-19 17:24:44

标签: ios swift sdk uinavigationcontroller frameworks

我已经实现了一个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)。

有人可以帮助解决此问题吗?

0 个答案:

没有答案