Должен ли делегат UIAlertView быть контроллером представления?
У меня есть проблема, когда объект, который создает 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 в методы родительского представления, но я надеялся, что этого не потребуется. Это ограничение реально или это мое воображение? То есть я что-то не так делаю?