Как изменить значения динамически в NSMutableArray в iPhone? - PullRequest
1 голос
/ 14 июля 2011

У меня есть 10 кнопок, и я написал действие кнопки с помощью переключателя. Когда я нажимаю на каждую кнопку, это увеличивает некоторое количество значений. Если я использую 10 различных переменных для установки переменной количества, это будет работать. Но есть ли другой возможный способ добиться этого?

Я хочу динамически изменять значения в изменяемом массиве.

Например:

    -(IBAction) btnAction : (id) sender{

       switch (btn.tag) {

                case 0:
               // amountArray is mutable array.

                    startCocoCount = startCocoCount + 10;

                    //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                //[amountArray addObject:str];

                break;

            case 1:

                startCocoCount = startCocoCount + 15;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];


                break;

            case 2:
                 startCocoCount = startCocoCount + 20;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 3:
                 startCocoCount = startCocoCount + 25;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];


                break;

            case 4:
                 startCocoCount = startCocoCount + 30;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];


                break;

            case 5:
                  startCocoCount = startCocoCount + 35;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 6:
                  startCocoCount = startCocoCount + 40;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 7:

                         startCocoCount = startCocoCount + 50;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 8:

                        startCocoCount = startCocoCount + 60;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 9:
                 startCocoCount = startCocoCount + 20;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 10:
                        startCocoCount = startCocoCount + 20;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            default:
                break;
        }
}

В табличном представлении,

cell.textLabel.text = [amountArray objectAtindex:indexPath];

Если я использую одну переменную, она не будет установлена ​​для всех условий, так как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 14 июля 2011

Вы можете попробовать это.Это будет работать.

int startCocoCount;

NSMutableArray *dataArray = [[NSMutableArray alloc] init];
for(int i=0;i<11;i++)
{
    [dataArray addObject:@"0"];
}

А для метода это будет выглядеть следующим образом:

-(IBAction) btnAction : (id) sender{

    switch ([sender tag]) {

        case 0:

            startCocoCount = startCocoCount + 10;

            [dataArray replaceObjectAtIndex:0 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:0] intValue] + startCocoCount]];

            break;

        case 1:

            startCocoCount = startCocoCount + 15;

            [dataArray replaceObjectAtIndex:1 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:1] intValue] + startCocoCount]];

            break;

        case 2:
            startCocoCount = startCocoCount + 20;

            [dataArray replaceObjectAtIndex:2 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:2] intValue] + startCocoCount]];

            break;

        case 3:
            startCocoCount = startCocoCount + 25;

            [dataArray replaceObjectAtIndex:3 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:3] intValue] + startCocoCount]];

            break;

        case 4:
            startCocoCount = startCocoCount + 30;

            [dataArray replaceObjectAtIndex:4 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:4] intValue] + startCocoCount]];

            break;

        case 5:
            startCocoCount = startCocoCount + 35;

            [dataArray replaceObjectAtIndex:5 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:5] intValue] + startCocoCount]];

            break;

        case 6:
            startCocoCount = startCocoCount + 40;

            [dataArray replaceObjectAtIndex:6 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:6] intValue] + startCocoCount]];

            break;

        case 7:

            startCocoCount = startCocoCount + 50;

            [dataArray replaceObjectAtIndex:7 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:7] intValue] + startCocoCount]];

            break;

        case 8:

            startCocoCount = startCocoCount + 60;

            [dataArray replaceObjectAtIndex:8 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:8] intValue] + startCocoCount]];

            break;

        case 9:
            startCocoCount = startCocoCount + 20;

            [dataArray replaceObjectAtIndex:9 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:9] intValue] + startCocoCount]];

            break;

        case 10:
            startCocoCount = startCocoCount + 20;

            [dataArray replaceObjectAtIndex:10 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:10] intValue] + startCocoCount]];

            break;

        default:
            break;
    }
}

Дайте мне знать, если у вас есть какие-либо вопросы.

1 голос
/ 14 июля 2011

NSNumber позволяет хранить в массиве. Чтобы получить доступ к массиву по индексу, вам необходимо предварительно заполнить массив NSNumber s, чтобы индексы были доступны.

//You will need to know the index otherwise use a dictionary with named keys
NSNumber *num = [amountArray objectAtIndex:index];
num = [NSNumber numberWithInt:[num intValue] + 20];
[amountArray replaceObjectAtIndex:index withObject:num];
0 голосов
/ 14 июля 2011

Я думаю, что вы можете упростить, как это

 -(IBAction) btnAction : (id) sender{

startCocoCount = startCocoCount + btn.tag;
}

Вы можете установить теги кнопки для хранения значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...