0

送信者の応答に応じて異なる計算で異なる文字列のセットを表示したい..2つの文字列のセットは並列です。つまり、名前は次のようになります。user1、user2、object1、object2、name1、name2、age1、age2など..私がこれまでに知っていることは、使用することです。

-(IBAction)showLotOfStuff:(id)sender{
switch ([sender tag]) {
case 1: //show user1, object1, name1, age1...
case 2: //show user2, object2, name2 age2...}

しかし、それまでに、やることや表示することがたくさんあるので、2倍のサイズと繰り返しのコードがあります..それは本当にばかげています、それは配列、計算を含み、私はそれを2回見たいと思っていますが、単にコピーするだけでそれを行うことができます貼り付けます。

やって半分にカットできる方法はないかしら。

-(IBAction)showLotOfStuff:(id)sender{
show user[sender tag], object[sender tag], 
name[sender tag], age[sender tag]...}

この質問は非常に基本的なものだと思いますが、その方法がわかりません。

4

1 に答える 1

1

多数のユーザーがいますか?あなたのデータはどのように見えますか?おそらくこれをリファクタリングすることができ、コードを複製することはできません。

NSArrayと呼ばれるものがあるとしましょうusers

使用しているコントロールの種類はわかりませんが、簡単にするために、いくつかのボタンがあると想定できます。各ボタンには、ユーザーの1人の情報が表示されます。配列のユーザーの位置に対応するボタンタグを付けることができます。理想的には、これらのタグを他の目的に使用して間違える可能性を減らすために、ある程度のオフセットを付けます。(つまり、タグ100、101、102のボタンが3つあり、配列に3人のユーザーがいると仮定します)。

次に、次のようなことを行うことができます。

- (IBAction)showLotOfStuff:(id)sender
{
  int userIndex = sender.tag - 100; // you could define 100 as a constant called userOffset or something to make this a little cleaner
  if(users.count <= userIndex)
    return; // out of bounds, probably want to check for this and handle it somehow

   MyObjectType *currentUser = [users objectAtIndex:userIndex];
   // do whatever with your user
}

これは一般的な例です。具体的な実装は、提供していない詳細によって異なります。

于 2012-07-25T18:17:26.277 に答える