我正在尝试将Instagram登录信息集成到我的应用中。我想要做的是打开一个浏览器(我正在考虑使用UIWebView
)用户登录,我应该拦截UIWebView
的重定向以获取我的access_token并关闭{{1} }。通过实现UIWebView
并覆盖UIViewController
方法,UIWebViewDelegate
很容易做到这一点,但是我在服务类中实现了所有的instagram代码(所有类方法都是静态的)因此没有理由创建类的实例)并且我希望能够显示和关闭此服务的浏览器(无需访问viewController,因此无法将shouldStartLoadWithRequest:
添加为子视图)。这有可能吗?如果可以的话怎么样?还有其他任何小节吗?
我正在尝试这样做,因为登录可能会弹出多个控制器,我不想在第n个地方复制相同的代码。
答案 0 :(得分:0)
shouldStartLoadWithRequest
是一种UIWebViewDelegate
方法。您可以将它用作实现UIWebViewDelegate
协议的任何类的实例方法 - 它不必是视图控制器!
我建议你让你的Instagram类实际启动(并使用实例方法而不是类方法)。然后在该类上实现UIWebViewDelegate
。这将处理拦截重定向。
至于在屏幕上获取Web视图,也许您应该为您的instagram类定义一个委托协议(称为MyInstagramControllerDelegate
或其他东西)。在此协议中,定义如下方法:
- (UIViewController*)viewControllerToPresentWebView;
除此之外,让自己成为一个用于显示网络视图的视图控制器,称为InstagramLoginWebViewController
。
然后,在您的Instagram课程中,当您需要提供网络视图时,请先拨打
UIViewController *presentingVC = [self.delegate viewControllerToPresentWebView]`
其次,您创建了InstagramLoginWebViewController
。第三,您已经呈现VC呈现您刚刚实例化的Web视图控制器。
将所有这些结合在一起的最后一点是要记住,无论何时创建instagram类的实例,都需要设置其委托。