私はObjective Cを初めて使用し、非常に単純な問題であるとわかっている問題を抱えています-おそらく間違った方法でアプローチしていると思います。
View Controller クラスにあるいくつかの UIAlertViews のデリゲートにしたい UIAlertViewDelegate クラスを作成しました。
ユーザーがボタンを押してテキストを入力すると、ViewController クラスのラベルがそのテキストで更新されます。ただし、何らかの方法で渡さない限り、UIAlertViewDelegate クラスからラベル「outputLabel」を参照することは明らかにできません。
表示されるエラーは、「宣言されていない識別子 'outputLabel' の使用」です。
ViewController.h
@interface ViewController : UIViewController <UIAlertViewDelegate>;
...
@property (strong) UIAlertViewDelegate *AVDelegate;
ViewController.m
- (void)viewDidLoad
{
UIAlertViewDelegate *AVDelegate;
AVDelegate = [[UIAlertViewDelegate alloc] init];
[super viewDidLoad];
}
- (IBAction)doAlertInput:(id)sender {
UIAlertViewDelegate *AVDelegate;
AVDelegate = [[UIAlertViewDelegate alloc] init];
UIAlertView *alertDialogue;
alertDialogue = [[UIAlertView alloc]
initWithTitle:@"Email Address"
message:@"Please Enter Your Email Address:"
delegate:self.AVDelegate
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
alertDialogue.alertViewStyle=UIAlertViewStylePlainTextInput;
[alertDialogue show];
}
UIAlertViewDelegate.m
#import "UIAlertViewDelegate.h"
@implementation UIAlertViewDelegate
- (void)alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
NSString *alertTitle = [alertView title];
if ([alertTitle isEqualToString:@"Alert Button Selected"] || [alertTitle isEqualToString:@"Alert Button Selected"]) {
if ([buttonTitle isEqualToString:@"Maybe Later"])
{
outputLabel.text=@"User Clicked: 'Maybe Later'";
UIAlertViewDelegate.h
@interface UIAlertViewDelegate : UIViewController <UIAlertViewDelegate,UIActionSheetDelegate>;
私は何年も前にJavaでいくつかの仕事をしました。UIAlertViewDelegate クラスに何らかの方法でビューを渡す必要があると思いますが、構文についてはよくわかりません。正しい方向へのポインターを大いに感謝します...
ジェームズ