0

tabItem2、tabItem3、および tabItem4 という名前の 3 つの UIButton があります。tabItems のタグとラベルのテキストは動的であり、InfoDictionary 内の項目の値に依存します。タグに基づいてスイッチを作成しました。これらのタグは 3 つのボタンすべてに適用されます。さまざまなボタンに合わせて、以下のコードを変更するにはどうすればよいですか? ボタン名を変更可能にする必要があります。つまり、switch ステートメントは 3 つのボタンすべてで機能する必要があります。

コードは次のようになります。

IBOutlet UIButton *tabItem4;
    IBOutlet UIButton *tabItem2;
    IBOutlet UIButton *tabItem3;

IBOutlet UILabel *tabItem4Label;
    IBOutlet UILabel *tabItem2Label;
    IBOutlet UILabel *tabItem3Label;

NSArray *tabItemArray = [self.InfoDictionary objectForKey:@"tabitem"];
    for(int i = 0; i <[tabItemArray count]; i++)
     {
         NSString *nameOfTab = [NSString stringWithFormat:@"tabItem%d",i+2];
         NSLog(@"%@",nameOfTab);
         switch ([[tabItemArray objectAtIndex:i] intValue]) {
             case kTabGameButtonTag:
                 nameOfTab.tag = kTabGameButtonTag;
                 nameOfTabLabel.text = kTabTitleTextGame;
                 [nameOfTab setImage:[UIImage imageNamed:@"game.png"] forState:UIControlStateNormal];
                 break;
             case kTabVideoButtonTag:
                 nameOfTab.tag = kTabVideoButtonTag;
                 nameOfTabLabel.text = kTabTitleTextVideoClip;
                 [nameOfTab setImage:[UIImage imageNamed:@"video.png"] forState:UIControlStateNormal];
                 break;
             case kTabQuizButtonTag:
                 nameOfTab.tag = kTabVideoButtonTag;
                 nameOfTabLabel.text = kTabTitleTextQuiz;
                 [nameOfTab setImage:[UIImage imageNamed:@"quiz.png"] forState:UIControlStateNormal];
                 break;
             default:
                 break;
         }
     }

これに関するガイダンスが必要です。

編集:

$1 = 0x0a219f50 {
tabitem =     (
        2000,
        2001,
        2002
    );
}

ディクショナリの残りの項目は機密です。そのため、重要な情報のみを共有しました。

4

2 に答える 2

0

よく考えた後、私はこのように質問を解決しました:

 NSArray *tabItemArray = [self.InfoDictionary objectForKey:@"tabitem"];
    NSMutableArray *tabItems = [NSMutableArray arrayWithObjects:tabItem2,tabItem2Label,tabItem3,tabItem3Label,tabItem4,tabItem4Label,nil];
    for(int i = 0,j = 0 ; i <[tabItemArray count]; i++, j=j+2)
     {
         UIButton  *item1 =  [tabItems objectAtIndex:j];
         UILabel  *label1 = [tabItems objectAtIndex:j+1];
         switch ([[tabItemArray objectAtIndex:i] intValue]) {
             case kTabGameButtonTag:
                 item1.tag = kTabGameButtonTag;
                 label1.text = kTabTitleTextGame;
                 [item1 setImage:[UIImage imageNamed:@"game.png"] forState:UIControlStateNormal];
                 break;
             case kTabVideoButtonTag:
                 item1.tag = kTabVideoButtonTag;
                 label1.text = kTabTitleTextVideoClip;
                 [item1 setImage:[UIImage imageNamed:@"video.png"] forState:UIControlStateNormal];
                 break;
             case kTabQuizButtonTag:
                 item1.tag = kTabVideoButtonTag;
                 label1.text = kTabTitleTextQuiz;
                 [item1 setImage:[UIImage imageNamed:@"quiz.png"] forState:UIControlStateNormal];
                 break;
             default:
                 break;
         }
     }
于 2013-03-09T16:05:23.833 に答える
0

ボタンの backgroundImage の代わりに画像を設定していたと思います このコードを試してください。ボタンのタイトルだけを表示するために別のラベルは必要ないと思います

[nameOfTab setImage:[UIImage imageNamed:@"game.png"] 
           forState:UIControlStateNormal];

これに置き換えます

[nameOfTab setBackgroundImage:[UIImage imageNamed:@"game.png"] 
                     forState:UIControlStateNormal];
于 2013-03-09T16:27:07.517 に答える