UIAlertView委托方法clickedButtonAtIndex:不起作用

时间:2014-10-06 17:36:55

标签: ios objective-c ios7 uialertview

我有一个类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处的按钮或任何其他任何一个时,都没有任何反应。 那么如何解决这个问题。

感谢。

2 个答案:

答案 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