У меня есть лист действий, который вызывает у меня горе на iphone в альбомной ориентации. Все отображается просто отлично, но в альбомной ориентации первая реальная кнопка имеет тот же индекс, что и кнопка отмены, и поэтому логика не работает.
Я пытался создать actionSheet с помощью initWithTitle: делегат: cancelButtonTitle: destructiveButtonTitle: otherButtonTitles: но это было то же самое, мой текущий код выглядит следующим образом;
UIActionSheet* actionMenu = [[UIActionSheet alloc] init];
actionMenu.delegate = self;
actionMenu.title = folderentry.Name;
actionMenu.cancelButtonIndex = 0;
[actionMenu addButtonWithTitle:NSLocalizedString(@"str.menu.cancel",nil)];
[self addActiveButtons:actionMenu forEntry:folderentry];
[actionMenu showInView:[self.navigationController view]];
[actionMenu release];
Метод addActiveButtons в основном настраивает, какие кнопки для добавления, какие он делает, используя код, подобный этому;
[menu addButtonWithTitle:NSLocalizedString(@"str.menu.sendbyemail",nil)];
Иногда может быть 6 кнопок, поэтому в альбомном режиме actionSheet отображается так:
Мой делегат отвечает так:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"Cancel Button Index is : %d",actionSheet.cancelButtonIndex);
NSLog(@"Button clicked was for index : %d",buttonIndex);
NSString *command = [actionSheet buttonTitleAtIndex:buttonIndex];
DLog(@"COMMAND IS: %@ for index: %d",command,buttonIndex);
if ([command isEqualToString:NSLocalizedString(@"str.menu.sendbyemail",nil)]) {
// Do stuff here
}
if ( ... similar blocks ... ) { }
}
В показанном примере я обнаружил, что cancelButtonIndex равен 0, как и ожидалось, но так же, как индекс кнопки для первой другой кнопки! Это означает, что если я нажму на вторую (например, кнопку «Сохранить в фотографии») , мой вывод отладки будет выглядеть так:
Индекс кнопки отмены: 0
Нажатие кнопки было для индекса: 1
КОМАНДА IS: Отправить по электронной почте для индекса: 1
Я пробовал разные перестановки и теперь рву волосы, удивляясь, что мне не хватает. У меня был хороший поиск вокруг, но другие проблемы, которые, похоже, возникают у людей, это проблемы с отображением, а не функциональные.
Кто-нибудь может увидеть, где я ошибся?
PS. Я знаю, что это не самый лучший опыт пользовательского интерфейса, но я полагаю, что большинство пользователей на самом деле будут в портретной ориентации большую часть времени или используют версию приложения для iPad, поэтому я готов принять поведение по умолчанию для таблицы действий при условии, что могу заставить его на самом деле работать!