UIAlertView的委托是否必须是视图控制器?

时间:2013-08-31 23:33:19

标签: ios objective-c uialertview uialertviewdelegate

我遇到一个问题,即创建UIAlertView的对象正在将消息发送回其委托,但委托对象正在崩溃。

我已经在其他几个实例中运行正常,但我在这种情况下尝试做的事情(以及与其他类似问题的不同之处)是实例化警报的对象,以及作为它的委托本身不是一个视图,而是一个在视图中实例化的对象。也就是说,在父视图中:

@implementation
*MyCustomObject customObject;

-(void)viewDidLoad {
  customObject = [[MyCustomObject alloc] init];
}
@end

在自定义对象中:

-(void)DoCoolThings {
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Do You Want To Do Cool Things"
                                                  message:@"...description of cool things..."
                                                 delegate:self
                                        cancelButtonTitle:@"No Thanks"
                                        otherButtonTitles:@"HELLS YES", nil];
    [message show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   if (buttonIndex == 1) {
    [self DoCoolThings];
   } else {
    [self GoAndCry];
   }
}

当我在viewcontroller对象中执行警报视图时,一切都很好。在这个本身没有视图的子对象中执行它允许我创建警报,但是该对象 - 不应该根据范围进行解除分配 - 似乎不想继续充当代表。

我得到的错误确实是一个解除分配的消息,但我强烈认为这不是问题,因为如果我删除警报,所有其他的东西 - 具体来说,它是商店购买流程的包装器 - 工作正常,所有这些委托方法都很愉快。

我有一个解决方案,允许我将Alert移动到父视图的方法中,但我希望不必这样做。这种限制是真实的,还是我的想象力?我在做其他错误的IE吗?

0 个答案:

没有答案