#objective-c #xcode #uipickerview
#objective-c #xcode #uipickerview
Вопрос:
Я пытаюсь отобразить сообщение, когда пользователь выбирает 2 значения из двойного component picker
.
В случае, если пользователь выбрал «Высокая температура» и «Сильный кашель», используйте представление предупреждений для отображения сообщения, указывающего: «Вы должны сделать тест ПЦР».
В случае, если пользователь выбрал «Высокая температура» и «Средний кашель» или «Средняя температура» и «Сильный кашель», отобразите сообщение, указывающее: «это просто обычный грипп».
В случае всех других возможных вариантов выбора отобразите сообщение: «Расслабьтесь … Беспокоиться не о чем!»
Вот код ниже:
#import "FirstViewController.h"
#define kFeverComponent 0
#define kCoughComponent 1
@interface FirstViewController ()
@property (strong, nonatomic) NSArray *feverTypes;
@property (strong, nonatomic) NSArray *coughTypes;
@property (weak, nonatomic) IBOutlet UIPickerView *dependentPicker;
@end
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.feverTypes = @[@"High Fever", @"Medium Fever", @"No Fever"];
self.coughTypes = @[@"Strong Cough", @"Medium Cough", @"No Cough"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (IBAction)symptomsButtonPressed:(id)sender {
NSInteger feverRow = [self.dependentPicker selectedRowInComponent: kFeverComponent];
NSInteger coughRow = [self.dependentPicker selectedRowInComponent: kCoughComponent];
NSString *fever = self.feverTypes[feverRow];
NSString *cough = self.coughTypes[coughRow];
NSString *message = [[NSString alloc] initWithFormat:
@"You chose %@ and %@.", fever, cough];
UIAlertController *alert =
[UIAlertController
alertControllerWithTitle:@"Thank you for choosing" message:message
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"Okay"
style:UIAlertActionStyleDefault handler:nil];
[alert addAction:action];
[self presentViewController:alert animated:YES completion:nil];
}
#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:
(NSInteger)component {
if (component == kCoughComponent) {
return [self.coughTypes count];
} else {
return [self.coughTypes count];
}
}
#pragma mark Picker Delegate Methods
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component {
if (component == kCoughComponent) {
return self.coughTypes[row];
} else {
return self.feverTypes[row];
}
}
@end
Ответ №1:
Вам необходимо реализовать pickerview:didSelectRow:inComponent
метод делегирования. Поэтому сделайте так, чтобы ваш класс придерживался UIPickerViewDelegate
протокола, добавив его в определение интерфейса, например
@interface FirstViewController () < UIPickerViewDelegate >
а затем реализовать, например
- ( void ) pickerView:( UIPickerView * ) pickerView
didSelectRow:( NSInteger ) row
inComponent:( NSInteger ) component
{
// logic here e.g.
NSInteger fever = [pickerView selectedRowInComponent:kCoughComponent];
NSInteger cough = [pickerView selectedRowInComponent:kFeverComponent];
NSString * msg;
if ( fever >= threshold amp;amp; cough >= threshold )
{
msg = @"Seek help";
}
else
{
msg = @"All fine";
}
// Show alert with msg
}