У меня есть что-то вроде следующего кода. Лист действия запускает doSomething OK, когда он появляется в первый раз (в кнопке IBAction), но когда он появляется второй раз, ничего не происходит, действие листа просто исчезает, не вызывая чего-то делать. Есть идеи?Лист действий UIAlerController не отвечает во второй раз, когда он называется
@implementation ...
- (void) setActions {
UIAlertAction *opt1 = [UIAlertAction actionWithTitle:@"Option 1" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[self doSomething:@"opt1"];}];
UIAlertAction *opt2 = [UIAlertAction actionWithTitle:@"Option 2" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[self doSomething:@"opt2"];}];
UIAlertAction *opt3 = ...
self.opt1 = opt1;
self.opt2 = opt2;
self.opt3 = opt3;
- (void) showActionSheet {
...
UIAlertController *selectAS = [UIAlertController alertControllerWithTitle:@"Select Options"
message:@"msg" preferredStyle:UIAlertControllerStyleActionSheet];
if (xyz) {
[selectAS addAction:self.opt1];
[selectAS addAction:self.opt2];
}
else{
[selectAS addAction:self.opt1];
[selectAS addAction:self.opt3];
}
[self presentViewController:selectqAS
animated:YES completion:nil];
}
- (void) doSomething: (NSString *) opt{
....
}
Ваш синтаксис очень смущает меня. Изображение, глядя на ваш код через год, вы сами не будете знать, что происходит. Apple представила UIAlertController, потому что она включает обработчики завершения в более надежном элегантном стиле, в отличие от своего аналога. Вы должны использовать его таким образом, вместо того чтобы иметь разные методы для всего. Все это можно сделать в одном фрагменте кода. Просто создайте/настройте/и представите UIAlertController внутри IBAction. – soulshined
По причинам, не зависящим от меня, ваше предложение сработало. Тот же код внутри IBAction был в порядке. Спасибо (вы можете отправить его в качестве ответа) –