Для альтернативи, що обробляє UIPickerView та таблиці дій, перевірте ActionSheetPicker
https://github.com/TimCinel/ActionSheetPicker
Це ввімкнено кокаподи. Він обробляє всі кнопки скасування та виконання в аркуші дій. Приклади у зразковому проекті чудові. Я вибираю ActionSheetStringPicker, який легко обробляє лише параметри на основі String, але API може обробляти більшість всього, що я можу придумати.
Спочатку я почав рішення, схоже на відповідь відмітки, але натрапив на цей проект і зайняв у мене приблизно 20 хвилин, щоб інтегрувати речі в мій додаток для використання, включаючи використання кокоподів: ActionSheetPicker (~> 0.0)
Сподіваюся, це допомагає.
Завантажте проект git і подивіться на наступні класи:
- ActionSheetPickerViewController.m
- ActionSheetPickerCustomPickerDelegate.h
Ось приблизно більшу частину коду, який я додав, плюс імпорт * .h.
- (IBAction)gymTouched:(id)sender {
NSLog(@"gym touched");
[ActionSheetStringPicker showPickerWithTitle:@"Select a Gym" rows:self.locations initialSelection:self.selectedIndex target:self successAction:@selector(gymWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:sender];
}
- (void)actionPickerCancelled:(id)sender {
NSLog(@"Delegate has been informed that ActionSheetPicker was cancelled");
}
- (void)gymWasSelected:(NSNumber *)selectedIndex element:(id)element {
self.selectedIndex = [selectedIndex intValue];
//may have originated from textField or barButtonItem, use an IBOutlet instead of element
self.txtGym.text = [self.locations objectAtIndex:self.selectedIndex];
}
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return NO; // Hide both keyboard and blinking cursor.
}