2011-07-14 6 views
1

私は10個のボタンを持っており、私はスイッチケースを使ってボタンアクションを書いた。私は各ボタンをクリックすると、いくらかの量の値が増加します。私はカウント値の変数を設定するための10の異なる変数を使用している場合、それは動作します。しかしこれを達成する他の方法はありますか?iPhoneのNSMutableArrayで値を動的に変更するにはどうすればよいですか?

可変配列内の値を動的に変更したいと思います。テーブルビューで

-(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]; 

私は単一の変数を使用していた場合、それはすべての条件に設定されないので、どのように私はこれを達成することができます例:については

+0

@Devan NSMutableArrayには何を保存しますか?どれくらいのオブジェクトがあるのですか?どのオブジェクトを更新したいですか? –

+0

@Jennis、実際には10個のボタンがあるので、10個のオブジェクトを変更可能な配列に保存します。ユーザーがクリックするボタンの値を取得したい。たとえば:ユーザーが3番目のボタンをクリックすると、30が表示されます。ありがとう。 – Pugal

答えて

1

これを試すことができます。それが動作します。

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; 
    } 
} 

は、何か質問があるなら、私に教えてください。

+0

あなたの答えをありがとう。実際に私はこのコードを使用している場合、startCocoCountの値は、最初のボタンでクリックして値90を取得し、2番目のボタンに移動すると、90 + 15の増加になります。最初に値が0から始まるはずのすべてのボタンをクリックします。だから、私は、単一の変数を使って値を適切に変更する方法を尋ねています。ありがとうございました! – Pugal

+0

ボタンを押すたびにstartCocoCountを0に初期化することができます。私は私の答えを変えた。 – AppAspect

+0

私がstartCocoCount = 0を設定した場合、それが0に設定されるたびに、という意味です。ボタンを別のボタンに移動するとき。たとえば:最初のボタンの値が90で、2番目のボタンの値が80の場合、再び最初のボタンに戻り、値がゼロになります。だからうまくいかない。 – Pugal

1

NSNumberを使用すると、配列に格納することができます。インデックスで配列にアクセスするには、配列がNSNumberで事前に設定されている必要があります。

//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

私はあなたが値を保持するために、ボタンのタグを設定することができ

このような
-(IBAction) btnAction : (id) sender{ 

startCocoCount = startCocoCount + btn.tag; 
} 

を簡略化することができると思います。

+0

あなたの答えをありがとう。しかし、どのようにそれが可能です、最初のボタンで私は10と2番目のボタン15,3番目のボタン25を追加する必要がありますので、各ボタンは異なる値を持っているので、どうすればいいですか?ありがとう – Pugal

+0

@ PugalDevan私は彼がそれぞれのボタンは独自のタグを持っていると思うと思う – BigOmega

+0

はいthats儀式。各ボタンには独自のタグがあります。 –

関連する問題