2014年6月20日 星期五

UIAlertView programmatically using Swift language

【說明】

方法可能都會變動,畢竟現在(2014/06/20)還在beta階段,一切以Apple公布為主。

適用於iOS 8.0 或之後

UIAlertController 取代了UIActionSheetUIAlertView,顯示AlertView的方式使用presentViewController:animated:completion:

【片段程式碼】

var alertView = UIAlertController(title: "Example to show alert", message: "Test on UIAleryView", preferredStyle: .Alert)
宣告一個名為alertView的物件,並設定AlertView顯示的title以及說明的文字,並使用Alert的樣式去顯示,如下圖所示。

preferredStytle的選擇有兩種:ActionSheet、Alert,上面的範例使用的是Alert,若是使用ActionSheet則為下圖所示。


alertView.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
設定alertView的動作,按鈕的文字設為OK,使用的樣式為預設,UIAlertActionStytle有三種樣式:Default、Cancel、Destructive,處理的程序設為無。

self.presentViewController(alertView, animated: true, completion: nil)
叫ViewController顯示alertView在頁面上,使用動畫的方式顯示設為是,完成時不做任何動作。

alertView.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: cancel))
若要偵測按鈕的動作需有個func讓Action可以去執行,如上面程式碼所示。

func cancel(alertView: UIAlertAction!) {
        println("You cancel it")

    }
當使用者按下Cancel按鈕後就會去執行名為cancel的func,而cancel的func程式碼如下。

【完整的程式範例】


//
//  ViewController.swift
//  UIAlertView
//
//  Created by Hsu,Yi-Sheng on 2014/6/20.
//  Copyright (c) 2014 yisheng. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet var myButton: UIButton
                            
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        myButton.addTarget(self, action: "buttonPress:", forControlEvents: .TouchUpInside)
    }
    
    func buttonPress(sender: UIButton!) {
        
        var alertView = UIAlertController(title: "Example to show alert", message: "Test on UIAleryView", preferredStyle: .Alert)
        
        alertView.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: cancel))
        alertView.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
        
        
        self.presentViewController(alertView, animated: true, completion: nil)
    }
    
    func cancel(alertView: UIAlertAction!) {
        println("You cancel it")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

【執行結果】
   


沒有留言:

張貼留言