我是 Objective C 的新手,遇到一个我知道一定很简单的问题——我想我可能以错误的方式处理它。
我创建了一个 UIAlertViewDelegate 类,我想成为我的 View Controller 类中的一些 UIAlertViews 的代表。
当用户按下按钮并输入一些文本时,我希望 ViewController 类中的标签用该文本进行更新。但是,除非我以某种方式传递它,否则我显然无法从我的 UIAlertViewDelegate 类中引用标签“outputLabel”。
我得到的错误是“使用未声明的标识符'outputLabel'。”
视图控制器.h
@interface ViewController : UIViewController <UIAlertViewDelegate>;
...
@property (strong) UIAlertViewDelegate *AVDelegate;
视图控制器.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 类传递给视图,但我不确定语法,非常感谢指向正确方向的指针......
詹姆士