2014-01-15 175 views
0

我正在嘗試將instagram登錄信息整合到我的應用程序中。我想要做的是打開一個瀏覽器(我在考慮使用UIWebView)用戶登錄,我應該攔截UIWebView的重定向,以獲取我的access_token並關閉UIWebView。通過執行UIWebViewDelegate並覆蓋shouldStartLoadWithRequest:方法,這很容易從UIViewController中完成,但我在服務類中實現了所有的instagram代碼(所有類方法都是靜態的,所以沒有理由創建類的實例),我希望能夠顯示和解除瀏覽器從此服務(無需訪問viewController,因此無法添加UIWebView作爲子視圖)。這是可能的,如果是這樣的話?其他小節?從服務中打開瀏覽器

我想這樣做,因爲登錄可能會彈出多個控制器,我不想在第n個地方複製相同的代碼。

回答

0

shouldStartLoadWithRequestUIWebViewDelegate方法。您可以將它用作實現UIWebViewDelegate協議的任何類的實例方法 - 它不必是視圖控制器!

我建議你讓你的instagram類實際啓動(並使用實例方法而不是類方法)。然後在該類上實現UIWebViewDelegate。這將處理攔截重定向。

至於在屏幕上獲取網絡視圖,也許你應該爲你的instagram類定義一個委託協議(稱爲MyInstagramControllerDelegate或其他)。在這個協議中,這樣定義的方法:

- (UIViewController*)viewControllerToPresentWebView; 

除了這一點,使自己的視圖控制器,用於示出在網絡視圖,稱爲像InstagramLoginWebViewController

然後,您的Instagram類,當你需要展示一個Web視圖,你第一個電話

UIViewController *presentingVC = [self.delegate viewControllerToPresentWebView]` 

二中創建一個InstagramLoginWebViewController。第三,你有呈現VC展示你剛剛實例化的Web視圖控制器。

把所有這些結合在一起的最後一件事是記住,每當你創建你的instagram類的實例時,你需要設置它的委託。