iOS: ActionSheetStringPicker successAction: 错误的选择

iOS: ActionSheetStringPicker successAction: wrong selection

我正在使用 ActionSheetPickers3.0 中的 ActionSheetStringPicker(因为 iOS 8,我不能再使用旧的选择器视图)。这就是我调用方法的方式:

ActionSheetStringPicker *genderPicker = [[ActionSheetStringPicker alloc] 
initWithTitle:@"Gender" rows:categoryTypes initialSelection:nil target:self 
successAction:@selector(selectedGender:) cancelAction:@selector(cancelledGender) 
origin:gender];

[genderPicker showActionSheetPicker];

我的成功操作代码是这样的:

-(void) selectedGender:(NSNumber *)genderSelected {

    NSLog(@"selected gender: %@",genderSelected);

    if (genderSelected == 0) {
        NSLog(@"male");
        gender.text = @"Male";
    } else {
        NSLog(@"female");
        gender.text = @"Female";
    }
}

当我 NSLog genderSelected 值时,我从 selected 性别 (male/female) 得到 1 或 0 值。我的问题是,在我的 if 语句中,它总是说我选择了女性。我从选择器中得到 select 的正确值,但似乎无法弄清楚问题出在哪里。有谁知道如何让我的 if 语句工作?谢谢!

好吧,这不是我想要的,但它确实有效。我将获得的 NSNumber 设置为 NSString,然后与“0”和“1”字符串进行比较。这是我的解决方案:

-(void) selectedGender:(NSNumber *)genderSelected {

NSString *string = [NSString stringWithFormat:@"%@",genderSelected];

    if ([string isEqualToString:@"0"]) {
        NSLog(@"male");
    } else if ([string isEqualToString:@"1"]) {
        NSLog(@"female");
    }
}

在您的成功回调方法中,您获取的参数是 NSNumber 类型。您不能直接将 NSNumber 类型的对象与 int 值 0 进行比较。因此请使用以下内容:

if (genderSelected.intValue == 0) {
    NSLog(@"male");
    gender.text = @"Male";
} else {
    NSLog(@"female");
    gender.text = @"Female";
}