Я вижу некоторые изменения поведения в iOS 4.2 с UIActionSheet. Я не могу найти что-либо об этом в документации для разработчиков на Apple или на форумах, поэтому не знаю, как решить эту проблему.
В моем приложении со списком я предоставляю пользователю лист действий, из которого он может выбрать список, который хочет загрузить при запуске. Очевидно, это означает, что будет переменное количество элементов, и элемент управления прекрасно с этим справится. Примерно до 7 пунктов, он показывает все элементы в виде кнопок. Как только он пересекает этот порог, он помещает элементы в представление прокрутки для выбора. До 4.2 он включал кнопку «Отмена» в этом списке прокрутки. В 4.2 теперь кажется, что он отделяет элемент управления «Отмена», оставляя его в качестве кнопки, а остальные элементы помещаются в представление прокрутки. Проблема в том, что кажется, что он сохраняет элемент Cancel в списке индексов кнопок, так что, когда я проверяю buttonTitleAtIndex: buttonIndex в clickedButtonAtIndex: или didDismissWithButtonIndex :, первый элемент возвращает «Cancel», затем остальные заголовки элементов 1. Нажмите кнопку «Отмена», чтобы вернуть «Отмена».
Кто-нибудь еще испытал это и есть предложение, как с этим справиться? Опять же, это работало нормально в 3.0, 3.1, 4.0 и 4.1.
Вот соответствующий код, который я использую:
- (IBAction)popupDefaultListActionSheet {
UIActionSheet *popup = [[UIActionSheet alloc]
initWithTitle:nil
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:nil];
for (List *l in allActiveLists) { // allActiveLists defined elsewhere
[popup addButtonWithTitle:[l label]];
}
popup.actionSheetStyle = UIActionSheetStyleBlackOpaque;
popup.tag = 23;
[popup becomeFirstResponder];
[popup showInView:[self.view.window.subviews objectAtIndex:0]];
[popup release];
}
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
DLOG(@"AppSettingsVC.actionSheet didDismissWithButtonIndex: %d", buttonIndex);
NSString *defaultListName = [actionSheet buttonTitleAtIndex:buttonIndex];
DLOG(@"chosen default list was: %@", defaultListName);
}