Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS运行时更改UIButton名称_Ios_Objective C_Uibutton - Fatal编程技术网

在iOS运行时更改UIButton名称

在iOS运行时更改UIButton名称,ios,objective-c,uibutton,Ios,Objective C,Uibutton,我有三个UIButton,分别名为tabItem2、tabItem3和tabItem4。tabItems的标记和标签的文本是动态的,取决于InfoDictionary中项目的值。我根据标签创建了切换到,这些标签适用于所有三个按钮。如何更改下面的代码以适应不同的按钮?我需要按钮名称可以更改->意思是说开关语句应该适用于所有三个按钮 代码如下所示: IBOutlet UIButton *tabItem4; IBOutlet UIButton *tabItem2; IBOutlet U

我有三个UIButton,分别名为tabItem2、tabItem3和tabItem4。tabItems的标记和标签的文本是动态的,取决于InfoDictionary中项目的值。我根据标签创建了切换到,这些标签适用于所有三个按钮。如何更改下面的代码以适应不同的按钮?我需要按钮名称可以更改->意思是说开关语句应该适用于所有三个按钮

代码如下所示:

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

词典中的其他条目是保密的。因此,我只分享了重要的信息。

经过深思熟虑,我这样解决了这个问题:

 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;
         }
     }
NSArray*tabItemArray=[self.InfoDictionary objectForKey:@“tabitem”];
NSMutableArray*tabItems=[NSMutableArray数组及其对象:tabItem2、tabItem2Label、tabItem3、tabItem3Label、tabItem4、tabItem4Label、nil];

对于(int i=0,j=0;i我认为您设置的是按钮的图像而不是背景图像,请尝试此代码。我认为不需要另一个标签来显示按钮的标题

换成这个


你能分享信息字典的详细信息吗编辑了这个问题…如果tabButton被声明为属性,你能尝试使用self.tabItem2、self.tabItem3、self.tabItem4等访问和分配按钮吗。到底是什么问题?它不起作用吗?你想要“更干净的代码”吗?我正在viewdidload中做这些事情。。
 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;
         }
     }
[nameOfTab setImage:[UIImage imageNamed:@"game.png"] 
           forState:UIControlStateNormal];
[nameOfTab setBackgroundImage:[UIImage imageNamed:@"game.png"] 
                     forState:UIControlStateNormal];