สำหรับทางเลือกอื่นที่จัดการ UIPickerView และ Action Sheets ให้ชำระเงิน ActionSheetPicker
https://github.com/TimCinel/ActionSheetPicker
มันเปิดใช้งาน cocoapods จัดการกับปุ่มยกเลิกและทำทั้งหมดบนแผ่นการดำเนินการ ตัวอย่างภายในโครงการตัวอย่างดีมาก ฉันเลือก ActionSheetStringPicker ซึ่งจัดการได้อย่างง่ายดายเพียงแค่ตัวเลือกที่ใช้ String แต่ API สามารถจัดการทุกอย่างที่ฉันคิดได้
เดิมทีฉันเริ่มต้นวิธีแก้ปัญหาเหมือนกับคำตอบที่ทำเครื่องหมายไว้ แต่สะดุดเข้ากับโครงการนี้และใช้เวลาประมาณ 20 นาทีในการรวมสิ่งต่าง ๆ เข้ากับแอปของฉันสำหรับการใช้งานรวมถึงการใช้ cocopods: ActionSheetPicker (~> 0.0)
หวังว่านี่จะช่วยได้
ดาวน์โหลด git project และดูคลาสต่อไปนี้:
- 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.
}