我有一个类MyClass
,我想将它设置为UIAlertView的委托。我的代码是
@interface MyClass : NSObject <UIAlertViewDelegate>
@end
@implementation MyClass
-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
NSLog(@"Clicked button at Index 1");
}
else {
NSLog(@"Whatever");
}
}
@end
并在ViewController.m
中#import "MyClass"
@interface ViewController() {
}
@end
static MyClass *mc;
@implementation ViewController
-(void)viewDidLoad {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:mc cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", @"nice"];
[alert show];
}
@end
当我运行应用程序时,警报会出现,但是当我点击索引1处的按钮或任何其他任何一个时,都没有任何反应。 那么如何解决这个问题。
感谢。
答案 0 :(得分:0)
您需要实际分配/初始化mc
喜欢(别忘了给超级打电话):
-(void)viewDidLoad {
[super viewDidLoad];
if (mc == nil)
mc = [MyClass alloc] init];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:mc cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", @"nice"];
[alert show];
}
答案 1 :(得分:0)
您要将委托设置为您尚未初始化的对象。确保mc
不是,如果是,请在创建警报之前添加alloc / init行以创建mc
。