iPhone - UIAlertView 的使用方法

iPhone - UIAlertView 的使用方法

 

转载自:http://pro.ctlok.com/2010/08/iphone-ipad-uialertview.html

 

iPhone - UIAlertView 的使用方法

Aug 4th, 2010 | Comments

UIAlertView  這個元件並不常用,如果將  UIAlertView  用作顯示普通訊息,這不是一個好的介面設計,因為彈出來的訊息是非常引人注意的,就好像  Javascript  的  alert  一樣,彈出來後整個視窗也不能操作,一定要用戶按下 “OK” 才能繼續操作,我相信各位也不喜歡到經常彈出  alert box  的網站吧,在  iPhone  也是同樣道理。

那何時才使用  UIAlertView ? 應該是有某些訊息無論如何也要用戶去知道,不是那些無關緊要的事,有可能是你的應用程式發生一些問題,令操作不能繼續的訊息。例如你的應用程式必須依賴網路來拿取資料,但用戶的裝置根本沒有連接網路,這時候你便需要使用  UIAlertView  去提示用戶去連接網路,不然應用程式不能運作。

首先是最簡單,只顯示訊息並只有一個 “OK” 按鈕的  Message Box :
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" 
message:@"Message 1......\nMessage 2......" delegate:nil 
cancelButtonTitle:@"OK" otherButtonTitles:nil];
    
[alert show];
[alert release];
 

 

因為按下 “OK” 按鈕後不需要任何動作,所以也不用設置代理 (delegate)。

cancelButtonTitle 是 UIAlertView 預設的按鈕,是必須設備的,但按鈕顯示的文字則可以任意更改。

而 otherButtonTitles 則可以用來增加按鈕,每加入一個 NSString 就會多一個按鈕。好像以下這樣:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" 
message:@"Message 1......\nMessage 2......" delegate:nil 
cancelButtonTitle:@"OK" otherButtonTitles:@"Button 1", @"Button 2", 
@"Button 3", nil];
 

 

 


這樣便會增加多三個按鈕,加上 Cancel Button 一共有 4 個按鈕。

 

 

如果想按下按鈕後有其他動作,你需要在相對應的 Class 加上 UIAlertViewDelegate 的 protocol

例如我想 UIViewController 當 UIAlertView 的代理:
ViewController.h

#import <UIKit/UIKit.h>
 
@interface ViewController : UIViewController <UIAlertViewDelegate> {

	 
}
	 
@end
 

 

 

在 ViewController.m 加上以下方法:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:
(NSInteger)buttonIndex{

    //Code.....

}
 

 

 

而 UIAlertView 的 CancelButton 的 buttonIndex 是 0,其他按鈕的 buttonIndex 則順序增加。

 

可以這樣判斷用戶究竟按下了那一個按鈕:

	.	- (void)loadView {
	.	
	.	 
	.	    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" 
	.	message:@"Message 1......\nMessage 2......" delegate:self 
	.	cancelButtonTitle:@"OK" otherButtonTitles:@"Button 1", @"Button 2",
	.	 @"Button 3", nil];
	.	
	.	    
	.	    [alert show];
	.	    [alert release];
	.	    
	.	}
	.	 
	.	- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:
	.	(NSInteger)buttonIndex{
	.	    
	.	    switch (buttonIndex) {
	.	
	.	        case 0:
	.	            NSLog(@"Cancel Button Pressed");
	.	
	.	            break;
	.	        case 1:
	.	            NSLog(@"Button 1 Pressed");
	.	            break;
	.	        case 2:
	.	            NSLog(@"Button 2 Pressed");
	.	            break;
	.	        case 3:
	.	            NSLog(@"Button 3 Pressed");
	.	            break;
	.	        default:
	.	            break;
	.	    }
	.	    
	.	}
 

 

 

 

 

 

 

你可能感兴趣的:(uialertview)