美文网首页
iOS新浪微博联合登陆sdk3.0.0的present webV

iOS新浪微博联合登陆sdk3.0.0的present webV

作者: redihd | 来源:发表于2015-07-01 00:03 被阅读336次

    之前在公司负责整个客户端的联合登陆,在加入微博的联合登录时遇到了一个问题,因为注册登陆界面本身就是present出来的,所以,当本地没有安装微博客户端时,不能present出微博的webview登陆页面
    看了一下报错:Attempt to present <UINavigationController: > on <RootViewController: > whose view is not in the window hierarchy!
    原因大概就是直接拿keyWindow的rootViewController来presentViewController
    但是我已经弹了个模态登陆/注册Controller了。。。。
    当时给他们反馈了,说是会在3月中旬出新的版本解决,但最后在三月还没出。
    最后想了两个方案来解决这个问题:
    1.把我本地的注册登陆页面改一个展现方式,用addChildViewController来展示,即自己来写一个
    - (void)presentChildViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion;
    再实现一个将childViewCOntroller移除
    -(void)removeViewController:(UIViewController *)viewController

    2.另外一个思路就是它调用的是rootVIewController 的- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
    那我们Hacky一下它,如果现在的栈顶VC有presentedVC则循环来找到最顶部presentedVC来present微博的webview
    如果栈顶VC没有presentedVC 则调用super 的 present 方法

    最后两个方法可以解决该问题,只是简单提供思路,抛砖引玉
    以上~

    相关文章

      网友评论

          本文标题:iOS新浪微博联合登陆sdk3.0.0的present webV

          本文链接:https://www.haomeiwen.com/subject/xwaeqttx.html