iPhone入門 - UIAlertView用法

iPhone入門 - UIAlertView用法

1. 最簡單的用法

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

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

delegate:nil

cancelButtonTitle:@"確定"

otherButtonTitles:nil];

[alert show];

[alert release];

f00cc8edab64034f8960e04cafc3793108551dc6


2. 爲UIAlertView添加多個按鈕

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

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

delegate:nil

cancelButtonTitle:@"取消"

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

[alert show];

[alert release];

6be13a24ab18972b08e42280e6cd7b899c510a91

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];

6afe80de9c82d1586f1774fb800a19d8be3e42de

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;

}

}

}

d6d57c4a20a4462339158e289822720e0ef3d790

這段代碼很簡單, 就是在消息框即將彈出時,遍歷所有消息框對象,將其文本對齊屬性修改爲 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
中做同樣的處理一樣可以得到自己想要的界面。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章