2015-11-04 56 views
0

我目前正在寫一個幫手來包裝我的alamofire請求。並想知道當我從我的助手類收到消息時,或者如何從我的助手類與我的視圖控制器進行通信,我應該如何呈現此alertviewcontroller時,我該如何presentalertviewcontroller?從輔助方法的當前視圖控制器

以下是我的,如果你看到我做錯了,建議任何事情,因爲這是我第一次寫api包裝。

import UIKit 
import Alamofire 
import SwiftyJSON 
import SVProgressHUD 

class AlamoHelper: NSObject { 

    class func request(method: Alamofire.Method, url: URLStringConvertible, var parameters: [String: AnyObject]? = nil) -> Alamofire.Request { 

     parameters!["os"] = "ios" 
     if let versionString = NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as? String { 
      parameters!["v"] = versionString 
     } 
     SVProgressHUD.showWithMaskType(SVProgressHUDMaskType.Black) 
     return Alamofire.request(method, url, parameters: parameters, encoding: .JSON) 

      .responseJSON { 
       response in 

       SVProgressHUD.dismiss() 

       switch response.result { 
       case .Success: 
        let json = JSON(response.result.value!) 

        if let message = json["message"].string { 
         let alert = UIAlertController(title: json["subject"].stringValue, message: message, preferredStyle: .Alert) 
         let okAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil) 
         alert.addAction(okAction) 
        } 

        if json["status"].intValue == 401 { 
         AppDelegate.isLoggedIn = false 
         AppDelegate.removeCookies() 
        } 

        break 
       case .Failure: 
        break 
       } 

     } 

    } 

} 

回答

0

試試這個僞代碼:

  1. 在接受你的觀點 控制器對象助手類寫一個構造函數。

    -(void)initWithController:(YourViewController *)_ctr 
        { 
        ctr = _ctr; 
        } 
    
  2. 編寫一個方法在視圖控制器類中呈現視圖控制器作爲goToNextVc()。

  3. 使用從視圖控制器獲得的相同實例從助手類調用goToNextVc()方法。

+0

任何建議寫第1步?因爲它可能是一個表視圖控制器或一個標籤欄視圖控制器嗎?再次抱歉,如果這聽起來很愚蠢,但我真的有點新。 – Happiehappie

+0

@Happiehappie:不需要,您需要在助手類中編寫構造函數。我的意思是init方法。我已經更新了我的答案。請將代碼轉換爲swift。 –

0

使用delegationAlamoHelper信息傳遞給呼叫者UIViewController

所以,

  1. 創建具有一些穿過像警報的有用信息的方法的協議被呈現等
  2. AlamoHelper創建代表屬性。
  3. 同時實例化AlamoHelper對象來自您的 UIViewController,設置self作爲代表對象AlamoHelper對象。
  4. 在您的UIViewController中實施協議方法。
  5. 終於,一旦請求回來,從AlamoHelper類,調用委託對象上的協議方法。
相關問題