UIAlertView的用法

1. 最簡單的用法spa

 

UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示" .net

                                                  message:@"這是一個簡單的警告框!" orm

                                                  delegate:nil   對象

                                                  cancelButtonTitle:@"肯定" 繼承

                                                  otherButtonTitles:nil];  索引

[alert show];  事件

[alert release]; get

 

2. 爲UIAlertView添加多個按鈕it

 

UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示" io

                                                  message:@"請選擇一個按鈕:" 

                                                  delegate:nil   

                                                  cancelButtonTitle:@"取消" 

                                                  otherButtonTitles:@"按鈕一", @"按鈕二", @"按鈕三",nil];  

[alert show];  

[alert release]; 

 3. 如何判斷用戶點擊的按鈕

UIAlertView有一個委託UIAlertViewDelegate ,繼承該委託來實現點擊事件

 頭文件:

 

@interface MyAlertViewViewController : UIViewController<UIAlertViewDelegate> {

}

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

-(IBAction) buttonPressed;

@end

源文件:

 

-(IBAction) buttonPressed

{

UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示" 

                                                 message:@"請選擇一個按鈕:" 

                                                 delegate:self   

                                                 cancelButtonTitle:@"取消" 

                                                 otherButtonTitles:@"按鈕一", @"按鈕二", @"按鈕三",nil];  

[alert show];  

[alert release]; 

}

 

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

{

NSString* msg = [[NSString alloc] initWithFormat:@"您按下的第%d個按鈕!",buttonIndex];

 

UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"提示"

                                                 message:msg

                                                 delegate:nil

                                                 cancelButtonTitle:@"肯定"

                                                 otherButtonTitles:nil];

 

[alert show];

[alert release];

 

[msg release];

}

點擊「取消」,「按鈕一」,「按鈕二」,「按鈕三」的索引buttonIndex分別是0,1,2,3

 

 

 4. 手動的取消對話框

 

[alertdismissWithClickedButtonIndex:0 animated:YES];

 

5:爲UIAlertView添加子視圖

在爲UIAlertView對象太添加子視圖的過程當中,有點是須要注意的地方,若是刪除按鈕,也就是取消UIAlerView視圖中全部的按鈕的時候,可能會致使整個顯示結構失衡。按鈕佔用的空間不會消失,咱們也能夠理解爲這些按鈕沒有真正的刪除,僅僅是他不可見了而已。若是在UIAlertview對象中僅僅用來顯示文本,那麼,能夠在消息的開頭添加換行符(@"\n)有助於平衡按鈕底部和頂部的空間。

下面的代碼用來演示如何爲UIAlertview對象添加子視圖的方法。

 

UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"請等待" 

                                                 message:nil

                                                 delegate:nil   

                                                 cancelButtonTitle:nil 

                                                 otherButtonTitles:nil];  

[alert show];

 

UIActivityIndicatorView*activeView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

activeView.center = CGPointMake(alert.bounds.size.width/2.0f, alert.bounds.size.height-40.0f);  

[activeView startAnimating];  

 

[alert addSubview:activeView];  

 

[activeView release];  

[alert release];  

 6.  UIAlertView默認狀況下全部的text是居中對齊的。 那若是須要將文本向左對齊或者添加其餘控件好比輸入框時該怎麼辦呢? 不用擔憂, iPhone SDK仍是很靈活的, 有不少delegate消息供調用程序使用。 所要作的就是在

- (void)willPresentAlertView:(UIAlertView *)alertView

中按照本身的須要修改或添加便可, 好比須要將消息文本左對齊,下面的代碼便可實現:

 

-(void) willPresentAlertView:(UIAlertView *)alertView

{

 

      for( UIView * view in alertView.subviews )

      {

            if( [view isKindOfClass:[UILabel class]] )

            {

                  UILabel* label = (UILabel*) view;

                  label.textAlignment=UITextAlignmentLeft;

 

            }

      }

}

 

 

 這段代碼很簡單, 就是在消息框即將彈出時,遍歷全部消息框對象,將其文本對齊屬性修改成 UITextAlignmentLeft便可。

添加其餘部件也一模一樣, 以下代碼添加兩個UITextField:

 

-(void) willPresentAlertView:(UIAlertView *)alertView

{

 

      CGRect frame = alertView.frame;

      frame.origin.y -= 120;

      frame.size.height += 80;

      alertView.frame = frame;

 

      for( UIView * viewin alertView.subviews )

      {

            if( ![viewisKindOfClass:[UILabelclass]] )

            {

                  CGRect btnFrame = view.frame;

                  btnFrame.origin.y += 70;

 

                  view.frame = btnFrame;

            }

}

 

UITextField* accoutName = [[UITextFieldalloc] init];

UITextField* accoutPassword = [[UITextFieldalloc] init];

 

accoutName.frame = CGRectMake( 10, frame.origin.y + 40,frame.size.width - 20, 30 );

accoutPassword.frame = CGRectMake( 10, frame.origin.y + 80,frame.size.width -20, 30 );

 

accoutName.placeholder = @"請輸入帳號";

accoutPassword.placeholder = @"請輸入密碼";

accoutPassword.secureTextEntry = YES;

 

[alertView addSubview:accoutPassword];

[alertView addSubview:accoutName];

 

[accoutName release];

[accoutPassword release];

}

 

 顯示將消息框固有的button和label移位, 否則添加的text field會將其遮蓋住。 而後添加須要的部件到相應的位置便可。

對於UIActionSheet其實也是同樣的, 在- (void)willPresentActionSheet:(UIActionSheet *)actionSheet中作一樣的處理同樣能夠獲得本身想要的界面。

相關文章
相關標籤/搜索