2016年12月25日 星期日

[iOS]UIAlertView (1)

ULAlertView元件可以顯示對話方塊,製做按鈕與使用者互動,

直到使用者按下按鈕後,才關閉對話方塊並回應使用者用者的按鈕動作。


UIAlertView常用屬性如下:

title 設定對話方塊的標題

message 設定對話方塊的內容

delagate 設定對話方塊的委派物件

numberOfButtons  傳回共有幾個按鈕

ULAlertViewStyle 設定對話方塊的樣式 ,
               
                                 Default 顯示單純的文字訊息。

                                 PlainTextInput 提供輸入文字後不會隱形的文字方塊讓

                                 使用者輸入資料。

                                 SecureTextInput,提供輸入文字後會隱形

                                 的文字方塊讓使用者輸入資料。

                                 LoginAndPasswordInput提供一個PlanTextInput和一個

                                 SecureTextInput,可以同時輸入帳號和密碼。

常用方法如下:


init()  預設建構式

addButtonWithTitle() 依序建立按鈕並設定按鈕文字,傳回建立按鈕的索引值,第一個建立

                                         的按鈕為0 。

buttonTitleAtIndex()  傳回指定索引的文字。

show()   顯示對話方塊

alertView(alertView,clickButtonAtIndex()  按下按鈕要解發的事件。

textFieldAtIndex(index)  取得文字方塊。index=0 取得帳號,index =1 取得密碼。

預設的UIAlertView 建構式語法

init(title:String? , message:String? , delegate:AnyObject? ,  cancelButtonTitle:String?)

如果要取得按下按鈕的動入,delegate 參數必須是self,否則設定nil即可。

cancelButtonTitle為第一個按鈕,通常會加上按鈕文字。

UIAlertView基本樣式












程式碼


UIAlertView(title: "Title", message: "message", delegate: nil, cancelButtonTitle: "cancelButton").show()


UIAlert按鈕的排列方式:

如果有2個按鈕,cancelButton會在左方,otherButton會在右方。













程式碼


UIAlertView(title: "title", message: "message", delegate: nil, cancelButtonTitle: "cancelButton", otherButtonTitles: "otherButtons").show()

如果有3個按鈕或以上,則會變成垂直排列


















除了用建構子,也能用別的方式建立UIAlertView
























程式碼

var alertView:UIAlertView = UIAlertView()
        
alertView.title = "視窗標題"
alertView.message = "我用的是Default 樣式對話方塊"
alertView.delegate = nil
alertView.addButtonWithTitle("1個按鈕")
alertView.addButtonWithTitle("2個按鈕")
alertView.addButtonWithTitle("3個按鈕")
alertView.addButtonWithTitle("other按鈕")
        

alertView.show()

用addButtonWithTitle()加入的按鈕會依加入的順序由上而下排列













程式碼

var alertView:UIAlertView = UIAlertView()
        
alertView.title = "視窗標題"
alertView.message = "我用的是Default 樣式對話方塊"
alertView.delegate = self
alertView.addButtonWithTitle("1個按鈕")

alertView.addButtonWithTitle("2個按鈕")

如果是2個按鈕,則會由左而右排列


接下來來說明一下按鈕觸發事件,需要繼承UIAlertViewDelegate

接一個Button和Label出來



























然候建立一個Button的Touch Up Inside事件, 並連結到程式碼






















把Label連結到程式碼











程式碼如下

//
//  ViewController.swift
//  book
//
//  Created by boywhy chen on 2016/12/25.
//  Copyright © 2016年 boywhy chen. All rights reserved.
//

import UIKit

class ViewController: UIViewController,UIAlertViewDelegate {

    @IBOutlet weak var mLabel: UILabel!
    @IBOutlet weak var mButton: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        //心情好,用個圓角按鈕
        mButton.layer.backgroundColor = UIColor.brownColor().CGColor
        mButton.layer.cornerRadius = 15
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    @IBAction func showAlertView(sender: AnyObject) {
        //create UIAlertView
        var alertView:UIAlertView = UIAlertView()
        
        alertView.title = "確認視窗"
        alertView.message = "確認要結束應用程式"
        alertView.delegate = self
        alertView.addButtonWithTitle("取消")
        alertView.addButtonWithTitle("確定")
        alertView.show()
    }
    
    //處理函式名字固定是alertView
    func alertView(alertView:UIAlertView!,clickedButtonAtIndex buttonIndex:Int)
    {
        var buttonTitle:String = alertView.buttonTitleAtIndex(buttonIndex)!
        
        mLabel.text = buttonTitle
    }


}

執行結果



沒有留言:

張貼留言