Мой UIActionSheet действует как немодальный? - PullRequest
0 голосов
/ 23 декабря 2010
NSLog(@"Display Action Sheet");

UIActionSheet *alert = [[UIActionSheet alloc] initWithTitle:@"Warning" delegate:self cancelButtonTitle:@"Proceed" destructiveButtonTitle:@"Cancel (current data will be discard)" otherButtonTitles:nil];

[alert showInView:[self view]];
[alert release];

NSLog(@"Action Sheet Released");

Это мой код, который создает лист действий.Прежде чем я вижу лист действий, оба «Экран действий листа» и «Выпущенный лист действий» получают вывод на консоль отладчика.На самом деле другие коды, которые я хочу выполнить ПОСЛЕ того, как я получил ввод от пользователя, все выполняются до того, как мне представят лист действий.

Это довольно странно.Я думал, что смогу использовать лист действий для выполнения кодов, основанных на вводе пользователя.

Ответы [ 3 ]

1 голос
/ 23 декабря 2010

Листы действий не являются модальными. Практически ничего в iOS нет. Вам нужно обработать все, что пользователь выберет на листе, одним из методов UIActionSheetDelegate, например -actionSheet:clickedButtonAtIndex:.

0 голосов
/ 05 июня 2014

Если я хочу получить ответ на вопрос, чтобы пользователь не разрешил опцию отмены, я делаю что-то вроде этого (ключ: «if (buttonIndex == -1) executeSelector») ... В основном просто цикл до счастливого...

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (debug==1) {
        NSLog(@"Running %@ '%@'", self.class, NSStringFromSelector(_cmd));
    }
    if (buttonIndex == -1) {
        [self performSelector:@selector(selectDb) withObject:nil afterDelay:0.1];
    } else {
        [DataLayer selectDatabase: buttonIndex];
    }
}

- (void) selectDb {
    if (![DataLayer hasSelectedDatabase]) {
        actionSheet  = [[UIActionSheet alloc] initWithTitle:@"Filter" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Main", @"Training", @"Test 1", @"Test 2", @"Test 3", @"Test 4", nil];
         [actionSheet showInView:[self view]];
   }
}
0 голосов
/ 23 декабря 2010

Убедитесь, что в заголовке есть UIActionSheetDelegate.

...