2017-11-30 11 views
0

forループを使用して3つのカスタムボタンを作成しました。しかし、ボタンを選択すると、テキストの色は変化しません。私はどのようにしますか?私は何を追加しなければならない?ここで 選択したときにカスタムボタンがテキストの色を変更しない

は、通常の状態のため

buttonText = [[NSArray alloc]initWithObjects: @"Slambook",@"Initiated",@"Collaborated",nil];  
NSInteger numControllers = [viewControllerArray count]; 

for (int i = 0; i<numControllers; i++) { 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = CGRectMake(X_BUFFER+i*(self.view.frame.size.width-2*X_BUFFER)/numControllers-X_OFFSET, Y_BUFFER, (self.view.frame.size.width-2*X_BUFFER)/numControllers, HEIGHT); 
    [button setTitleColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateHighlighted]; 
    [button setTitleColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateSelected]; 
    [button setTitle:[buttonText objectAtIndex:i] forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(tapButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    [navigationView addSubview:button]; 
} 
+0

??:

はこれを試してみてください –

+0

'.normal'カラーとは何ですか?どのように設定しますか?これはデフォルトの色です。これが違う場合は、上記のコードがボタンをタップしたときに表示される色を正しく設定するため、上に示したような問題があります。 –

+0

@意味の問題ノーマルカラーは黒に設定されています。クリックするとボタンの色になりますが、黒のままです。 –

答えて

0

私はダミーテキストを持つ単一のボタンのコードを試してみましたが、あなたの変更、黒のテキストの色、私のコードですタップするとボタンの色がハイライト表示されます:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = CGRectMake(20, 40,50 , 35); 
//  button.frame = CGRectMake(X_BUFFER+i*(self.view.frame.size.width-2*X_BUFFER)/numControllers-X_OFFSET, Y_BUFFER, (self.view.frame.size.width-2*X_BUFFER)/numControllers, HEIGHT); 
    [button setTitle:@"Dummy" forState:UIControlStateNormal]; 
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateHighlighted]; 

     [button addTarget:self action:@selector(tapButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:button]; 

ボタンの色を長時間変えないで、ボタンのテキストの色を変更します。

[ボタン色: 255.0アルファ:1] forState:UIControlStateHighlighted];あなたはボタンのクリックでテキストの色を変更したい

NSInteger numControllers = [viewControllerArray count]; 

    for (int i = 0; i<numControllers; i++) { 

     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     button.frame = CGRectMake(X_BUFFER+i*(self.view.frame.size.width-2*X_BUFFER)/numControllers-X_OFFSET, Y_BUFFER,(self.view.frame.size.width-2*X_BUFFER)/numControllers, HEIGHT); 
    button.tag=i+200; 
     [button setTitleColor:[UIColor blackcolor] forState:UIControlStateNormal]; 
     [button setBackgroundColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1]]; 
     [button addTarget:self action:@selector(tapButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [navigationView addSubview:button]; 
    } 
- (IBAction)tapButtonAction:(id)sender 
{ 

    UIButton *btn = (UIButton*)sender; 

     [btn setBackgroundColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateNormal]; 
     [btn setTitleColor:[UIColor blackcolor] forState:UIControlStateNormal]; 

    for (int i = 0; i<numControllers; i++) { 
     UIButton *restBtn=[navigationView viewWithTag:i+200]; 
    if(restbtn!= btn) 
    { 
     [restBtn setBackgroundColor:[UIColor grayColor] forState: UIControlStateNormal]; 
     [restBtn setTitleColor:[UIColor blackcolor] forState:UIControlStateNormal]; 
} 

    } 
} 
+0

私は同じ問題を抱えていますが、他のボタンを選択するまでその色を残しておきたいです。 –

+0

あなたはtapButtonActionで管理しなければならない人:方法 –

+0

@JatinRB Koratの回答でそれを試しました。一度設定すると他のボタンをタップすると選択されていない色に戻りません –

0
NSInteger numControllers = [viewControllerArray count]; 

    for (int i = 0; i<numControllers; i++) { 

     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     button.frame = CGRectMake(X_BUFFER+i*(self.view.frame.size.width-2*X_BUFFER)/numControllers-X_OFFSET, Y_BUFFER, (self.view.frame.size.width-2*X_BUFFER)/numControllers, HEIGHT); 
     [button setTitleColor:[UIColor blackcolor] forState:UIControlStateNormal]; 
     [button setBackgroundColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1]]; 
     [button addTarget:self action:@selector(tapButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [navigationView addSubview:button]; 
    } 
- (IBAction)tapButtonAction:(id)sender 
{ 

    UIButton *btn = (UIButton*)sender; 
    if ([btn isSelected]) { 
     [btn setSelected:NO]; 
     [btn setBackgroundColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateNormal]; 
     [btn setTitleColor:[UIColor blackcolor] forState:UIControlStateNormal]; 

    } 
    else 
    { 
     [btn setSelected:YES]; 
     [btn setBackgroundColor:[UIColor colorWithRed:204.0/255.0 green:24.0/255.0 blue:204.0/255.0 alpha:1] forState:UIControlStateNormal]; 
     [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 

    } 
} 

このコードのforループ

int x = 0; 
    for (int i = 0; i < [viewControllerArray count]; i++){ 
     //int y=2; 
     UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x+2, 0, 40, 36)]; 

     id myArrayElement=[viewControllerArray objectAtIndex:i]; 

     [button setTitle:[NSString stringWithFormat:@"%@",myArrayElement] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor blackcolor]]; 

     button.titleLabel.font = [UIFont systemFontOfSize:15]; 


     x += button.frame.size.width; 

     [button setBackgroundColor:[UIColor colorWithRed:137.0/255.0 green:110.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(tapButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    } 
+0

クリックすると色が変わります。しかし、他のボタンをクリックすると、それは同じ色のままです。選択されていないものをグレーに変更したいのですが、他のボタンが選択されています。 –

+0

tapButtonActionの変更点がありますのでもう一度参照してください。 –

関連する問題