Сохранение buttonIndex в объект (NSNumber) - PullRequest
0 голосов
/ 11 ноября 2011

Я пытаюсь сохранить выбранный индекс таблицы действий в объект. Но почему он всегда читает 0?

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSNumber *type, *count;
    if ([actionSheet.title isEqualToString:@"Select Taxi Type"]) {
        if (buttonIndex !=3) {
            type = [NSNumber numberWithInteger:buttonIndex];
            UIActionSheet *taxiCountQuery = [[UIActionSheet alloc] initWithTitle:@"Select Taxi Count" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"1", @"2", @"3", nil];

            taxiCountQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
            taxiCountQuery.tag = actionSheet.tag;

            [taxiCountQuery showFromTabBar:self.tabBarController.tabBar];

            [taxiCountQuery release];
        }
    }
    else if ([actionSheet.title isEqualToString:@"Select Taxi Count"]){
        if (buttonIndex !=3) {
            NSLog(@"buttonIndex:%i", buttonIndex);
            count = [NSNumber numberWithInteger:buttonIndex];
            NSLog(@"type:%f", type); // always read 0
            NSLog(@"count:%f", count); // always read 0
        }
    }
}

РЕДАКТИРОВАТЬ - 2-я часть

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSNumber *type = [[NSNumber alloc] init];
    if ([actionSheet.title isEqualToString:@"Select Taxi Type"]) {
        if (buttonIndex !=3) {
            type = [NSNumber numberWithInteger:buttonIndex];
            UIActionSheet *taxiCountQuery = [[UIActionSheet alloc] initWithTitle:@"Select Taxi Count" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"1", @"2", @"3", nil];
            taxiCountQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
            taxiCountQuery.tag = actionSheet.tag;

            [taxiCountQuery showFromTabBar:self.tabBarController.tabBar];

            [taxiCountQuery release];
        }
    }
    else if ([actionSheet.title isEqualToString:@"Select Taxi Count"]){
        if (buttonIndex !=3) {
            NSNumber *count = [[NSNumber alloc] initWithInteger:buttonIndex+1];
            NSLog(@"buttonIndex:%i", buttonIndex);
            count = [NSNumber numberWithInteger:buttonIndex +1];
           NSLog(@"type:%i", [type intValue]); // always read 0
            NSLog(@"count:%i", [count intValue]); // reads fine now
           [count release];
        }
    }
}

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

NSNumber - это объект, который может содержать базовые типы для хранения в структурах данных, таких как NSDictionary и NSArray.% F в NSLog ищет двойное число.Этот код должен давать вам предупреждение.

Если вы выполните NSLog (@ "% i", [type intValue]), вы получите правильный ответ.

0 голосов
/ 11 ноября 2011

Пожалуйста, проверьте этот код.

NSNumber *numberNs = [[NSNumber alloc] initWithInteger:buttonIndex];

Надеюсь, это поможет вам.

...