Как связать строку, выбранную в представлении выбора из делегата приложения, с переменной в контроллере представления? - PullRequest
0 голосов
/ 24 декабря 2011

У меня есть вопросы, касающиеся UIPickerView.у меня есть этот метод работает в делегате приложения:

- (id) init {
    if([super init] == nil) return nil;
    myGoal = [[NSArray alloc] initWithObjects:
              @"Select Goal",@"First Class Honors",@"Second Class, Upper",@"Second Class, Lower", @"Third Class Honors", @"Pass with Merit, Bachelor",@"Pass, Bachelor", nil];
    return self;
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
       inComponent:(NSInteger)component {

    NSLog(@"picked row: %i, component: %i", row, component);
    NSLog(@"the value: %@", [self.myGoal objectAtIndex:row]);

и в файле viewcontroller.m, у меня есть IBAction, связанный для выполнения расчетов при нажатии.но для того, чтобы сделать расчет, мне нужно знать, какая строка выбрана в методе делегата приложения.

в моем IBAction:

- (IBAction) calculateGoal: (id) sender {

    **//--i want to link the selected pickerview row to a fix integer in his case the GPA. how sould i do this?** 
    if (row == 1) {
        double selectedGPA = 4.5;
    }
    if (row == 2) {
        double selectedGPA = 4.0;
    }
    if (row == 3) {
        double selectedGPA = 3.5;
    }
    if (row == 4) {
        double selectedGPA = 3.0;
    }
    if (row == 5) {
        double selectedGPA = 2.5;
    }
    if (row == 6) {
        double selectedGPA = 2.0;
    }

    //--change text to numbers
    double gpa = [txtGPA.text doubleValue];
    double totalau = [txtTotalAU.text doubleValue];
    double remainingau = [txtRemainingAU.text doubleValue];
    double x = gpa * totalau;
    double gpagoal = (selectedGPA * (totalau + remainingau) - x)/remainingau; //should replace 3.5 with a variable(selectedGPA) related with goal. First Class = 4.5 Second Class Upper = 4.0, Second Class Lower = 3.5, Third Class = 3.0, Pass with Merit = 2.5, Pass =2.0

Вопрос: 1. в IBAction моего view controller.m я хочу иметь возможность выбрать, какую строку выбрать (метод из делегата приложения).В настоящее время выбран файл m), так что я могу присвоить соответствующее значение переменной «selectedGPA».

2. Это правильное выражение if в методе IBAction делегата приложения при фильтрации выбранной строки и назначении целого числак переменной "selectedGPA"?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2011

мне удалось решить мою проблему.я не уверен, что это правильный путь, или мне просто повезло, что это сработало ..

int row;
double selectedGPA;

row = [myPicker selectedRowInComponent:0];

//--i want to link the selected pickerview row to a fix integer in his case the GPA. how sould i do this.
if(row == 0){
    selectedGPA = 0;
}
else if (row == 1) {
    selectedGPA = 4.5;
}
else if (row == 2) {
    selectedGPA = 4.0;
}
else if (row == 3) {
    selectedGPA = 3.5;
}
else if (row == 4) {
    selectedGPA = 3.0;
}
else if (row == 5) {
    selectedGPA = 2.5;
}
else
    selectedGPA = 2.0;
0 голосов
/ 24 декабря 2011

Использовать делегата. Установите AppDelegate в качестве делегата вашего UIPickerView.

self.picker.delegate = [[UIApplication sharedApplication] delegate];
...