2017-02-23 50 views
0

我在許多類中都有Alert調用,並且我希望有一個Alert類處理所有用途,即需要警報的情況下調用Alert類。所有的警報代碼都在一個地方。全局使用的類

現在,我在每個出現的課程中都重複了警報代碼。我需要一組警報代碼。

我該怎麼做?

+0

我寫了一個很長的答案。我希望它能幫助你。順便說一句,你在Objective C或Swift中編碼嗎? – Balanced

+0

你自己寫了什麼代碼來嘗試做這件事?請不要讓人們爲你做這項工作。告訴我們你已經嘗試了什麼,什麼不起作用,以表明你已經花時間去嘗試幫助你自己了,它使我們無法提供明顯的答案,最重要的是它可以幫助你獲得更具體和相關的信息回答。另請參閱[問] –

回答

0

您需要爲您的警報創建一個類。

class MyCustomAlertView{ 

static let sharedUtils = MyCustomAlertView() 

class func showAlertOnVC(targetVC: UIViewController, title: String, message: String) 
{ 
    // write custom code here 
    let alert = UIAlertController(
     title: title, 
     message: message, 
     preferredStyle: UIAlertControllerStyle.alert) 
    let okButton = UIAlertAction(
     title:"OK", 
     style: UIAlertActionStyle.default, 
     handler: 
     { 
      (alert: UIAlertAction!) in 
    }) 
    alert.addAction(okButton) 
    targetVC.present(alert, animated: true, completion: nil) 
}} 

無論在項目中,您需要調用警報,如下呼籲:

MyCustomAlertView.showAlertOnVC(targetVC: self, title: "MyTitle", message: "test message") // whatever title and message you want 
0

警報您可以使用第三方庫,如:

檢查出來,它非常有用。

此外,如果你想自己做,你可以創建一個自定義的類。

例如:

public class AlertUtils { 

    // Build classic Alert with OK Button 
    class func buildAlertInfo(withTitle title: String?, andMessage message: String?, withHandler handler: (UIAlertAction -> Void)?) -> UIAlertController { 
     let alertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert) 
     alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: handler)) 
     return alertController 
    } 

    // Build custom Alert with an OK Button and a redirection Button 
    class func buildAlertInfoWithFavButton(withTitle title: String?, andMessage message: String?, withHandler handler: [((UIAlertAction) -> Void)]?) -> UIAlertController { 
     let alertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert) 
     alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: handler!.first)) 
     alertController.addAction(UIAlertAction(title: "Favoris", style: UIAlertActionStyle.Default, handler: handler!.last)) 

     return alertController 
    } 
} 

有了這個類,你可以建立和像你想自定義您的通知。您需要帶有「確定」按鈕和「設置」按鈕的警報。 您可以創建儘可能多的自定義方法來構建特定的警報。

這裏是你如何使用它:

let alert = AlertUtils.buildAlertInfo(withTitle: NSLocalizedString("alert_info_title", comment: ""), 
                 andMessage: NSLocalizedString("alert_message", comment: ""), withHandler: nil) 
       self.presentViewController(alert, animated: false, completion: nil) 

注:請記住,這是重新集結在NSLocalizedString您的所有字符串的最佳做法。

的其他例子與處理程序:

let alert = AlertUtils.buildAlertInfoWithFavButton(
       withTitle: "Alert Info" 
       andMessage: "Whatever you want", 
       withHandler: [okHandler, favoriteHandler] 
      ) 
      self.presentViewController(alert, animated: false, completion: nil) 

而且你可以在處理程序爲您的報警按鈕進行自定義操作

//Ok handler 
    func okHandler(action: UIAlertAction) { 
     //Do nothing 
    } 

    //Favorite handler to redirect to the Favorite View Controller 
    func favoriteHandler(action: UIAlertAction) { 
     self.navigationController?.pushViewController(FavoritesViewController(), animated: true) 
    } 
0

使一個類的方法爲你的類,並用普通alertview代碼,所以你不需要任何它的實例。 然後只需導入這個通用類,然後你可以在任何視圖控制器中調用類的方法,如:

[InternetAlert showAlert];