コード実装ActionSheetとAlert基本機能
もともとActionSheetのいくつかの属性を詳しく研究するつもりで、午前中にこのブログを書いて、結局先生は何かを探して、このように遅れて、しかし今日記録がなくてはいけなくて、ただ簡単に覚えて、ActionSheetといえば思わずAlertを思い出して、彼らはどんな違いがありますか?
ActionSheetは、Windowsの「OK-キャンセル」ダイアログボックスのように、ユーザーに選択を強制します.ユーザが行うべき操作に一定の危険がある場合、ActionSheetを使用してユーザに危険提示を行うことが多く、ユーザはキャンセル操作を行う機会がある.
AlertはWindowsのMessageboxに相当し、ActionSheetとも似ています.異なることに、Alertは1つの選択肢しかなく、ActionSheetは少なくとも2つの選択肢を必要とします.
機能を実現するには、Buttonをクリックし、Alert警告をポップアップし、Alertでボタンをクリックすると、ActionSheetプロンプト操作が表示され、ActionSheetをクリックしてButtonをクリックし、Alert警告をポップアップし、機能効果のスクリーンショットが表示されます.
1.ActionSheetDemoという新しいプロジェクトを作成します.File->New->Project ->single View Application -> next
2.ActionSheetとAlert委任メソッドを使用したため、ActionSheetとAlertプロトコルを追加し、次の2つのオブジェクトを宣言する
4.Buttonクリックイベント、
ActionSheetは、Windowsの「OK-キャンセル」ダイアログボックスのように、ユーザーに選択を強制します.ユーザが行うべき操作に一定の危険がある場合、ActionSheetを使用してユーザに危険提示を行うことが多く、ユーザはキャンセル操作を行う機会がある.
AlertはWindowsのMessageboxに相当し、ActionSheetとも似ています.異なることに、Alertは1つの選択肢しかなく、ActionSheetは少なくとも2つの選択肢を必要とします.
機能を実現するには、Buttonをクリックし、Alert警告をポップアップし、Alertでボタンをクリックすると、ActionSheetプロンプト操作が表示され、ActionSheetをクリックしてButtonをクリックし、Alert警告をポップアップし、機能効果のスクリーンショットが表示されます.
1.ActionSheetDemoという新しいプロジェクトを作成します.File->New->Project ->single View Application -> next
2.ActionSheetとAlert委任メソッドを使用したため、ActionSheetとAlertプロトコルを追加し、次の2つのオブジェクトを宣言する
#import @interface ASDViewController : UIViewController { UIActionSheet *actionSheet; UIAlertView *alert ; } -(void)buttonClicked:(id)sender; @end
3.ViewDidLodのコードは基本的に注釈をつけて、直接コードを貼ります- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CGRect frame = CGRectMake(50, 100, 200, 70); UIButton *myButon = [UIButton buttonWithType:UIButtonTypeRoundedRect]; myButon.frame = frame; // [myButon setTitle:@" ActionSheet" forState:UIControlStateNormal]; // [myButon setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];// Button , myButon.titleLabel.textColor = [UIColor blackColor];// , [myButon setBackgroundColor:[UIColor clearColor]];// // myButon.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;//button , // myButton buttonClicked [myButon addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; // view [self.view addSubview:myButon]; /* // , , , http://www.cocoachina.com/iphonedev/toolthain/2011/1223/3778.html UIProgressView *progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar]; progressView.frame = CGRectMake(20, 300, 200, 30); [alert addSubview:progressView]; */ }
Buttonが表示されない場合は、コードを見てButtonが問題に直面したブログを書くことができますが、いくつかの問題は私のような菜鳥は説明できません.4.Buttonクリックイベント、
-(void)buttonClicked:(id)sender { UIAlertView *alerttest = [[UIAlertView alloc] initWithTitle:@" " message:@" ActionSheet " delegate:self cancelButtonTitle:@" " otherButtonTitles:@" ActionSheet ",@" ",@" ", nil]; [alerttest addButtonWithTitle:@" "];// Alrt Button alert=alerttest; [alert show]; }
5.ここでAlertの依頼方法についてお話しします.少ないでしょう.他のテストもしていません.テストは依頼方法でNSLogをして、端末の下で出力結果を見て、ボタンをクリックしてこれらの出力結果を見ます.http://blog.csdn.net/duxinfeng2010/article/details/7702157この中にはあるが,書いていない.// -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { /******************************************************************************************** switch() , buttonIdex==2 , Actionsheet, , case , ******************************************************************************************** switch (buttonIndex) { case 0: NSLog(@" "); break; case 1: NSLog(@" ActionSheet "); break; case 2: NSLog(@" "); break; case 3: NSLog(@" "); break; case 4: NSLog(@" "); break; default: break; } ********************************************************************************************/ if (buttonIndex == 0) { NSLog(@" "); } else if (buttonIndex == 1) { UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@" " delegate:self cancelButtonTitle:@" " destructiveButtonTitle:@" ?" otherButtonTitles:@"Test1",@"Test2",@"Test4", nil]; [sheet showInView:self.view]; } else if(buttonIndex == 2) { NSLog(@" "); } else if (buttonIndex == 3) { NSLog(@" "); } else { NSLog(@" "); } }
//AlertView -(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { }
//AlertView , -(void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex { }
//AlertView -(void)alertViewCancel:(UIAlertView *)alertView { } //AlertView -(void)didPresentAlertView:(UIAlertView *)alertView { }
//AlertView -(void)willPresentAlertView:(UIAlertView *)alertView { }
ActionSheetとAlertの書き方は同じで、Alertの「ActionSheetをテストするボタンをクリックした」ときに私が書いたポップアップActionSheetを呼び出したいと思っていましたが、ボタンのインデックス値(buttonIndex)によってこのボタンオブジェクトをどのように特定するか分かりません.addTargetをどのように使うか分かりません. action: forControlEvents:メソッドはこの依頼メソッドのほかにもう1つの関数を書きますので、そのまま依頼メソッドの中にしましょうActionSheetに書いてみましたが、結果的に実現したので、なんだかメソッドがあまりよくないような気がします UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@" " delegate:self cancelButtonTitle:@" " destructiveButtonTitle:@" ?" otherButtonTitles:@"Test1",@"Test2",@"Test4", nil]; [sheet showInView:self.view];
6.そしてActionSheetの依頼方法も書きますが、実はこれらの依頼方法にはあまり機能していません. http://blog.csdn.net/duxinfeng2010/article/details/7702169 #pragma actionSheet delegate -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { NSLog(@" "); } if (buttonIndex == 1) { UIAlertView *alerttest2 = [[UIAlertView alloc] initWithTitle:@" " message:@" ActionSheet test1 " delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@" ",@" ", nil]; [alerttest2 addButtonWithTitle:@" "];// Alrt Button [alerttest2 show]; } } -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { } -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex { } -(void)actionSheetCancel:(UIActionSheet *)actionSheet { } -(void)didPresentActionSheet:(UIActionSheet *)actionSheet { } -(void)willPresentActionSheet:(UIActionSheet *)actionSheet { }
ソースコードを添付http://download.csdn.net/detail/duxinfeng2010/4402019