3

I have a ViewController with an UIButton inside. When I clicked, the text on the button disappeared. I add all the setTitle for all states, but it continues disappearing. Any idea?

This is a part of my code:

@interface AddCardViewController : UITableViewController <UITextFieldDelegate>{
UIButton *commit;
    ......

@implementation AddCardViewController

- (void)viewDidLoad{

    self.commit = [UIButton buttonWithType: UIButtonTypeCustom];

    [self setCommitProperties];

    [self.view addSubview:commit];

 .........}



- (void) setCommitProperties{

   CGRect frameTable = self.tableView.frame;

   CGRect frame = CGRectMake(frameTable.origin.x + 10, 140, frameTable.size.width - 20, 40);

   commit.frame = frame;

   [commit setBackgroundColor : [UIColor whiteColor]];

   [commit setTitle: NSLocalizedString(@"AddCard",@"") forState: UIControlStateNormal];
   [commit setTitle: NSLocalizedString(@"AddCard",@"") forState: UIControlStateSelected];
   [commit setTitle: NSLocalizedString(@"AddCard",@"") forState: UIControlStateHighlighted];
   [commit setTitle: NSLocalizedString(@"AddCard",@"") forState: UIControlStateApplication];
   [commit setTitle: NSLocalizedString(@"AddCard",@"") forState: UIControlStateReserved];
   [commit setTitle: NSLocalizedString(@"AddCard",@"") forState: UIControlStateDisabled];

    [commit addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];    

   UIColor *color = [[[PersonalizationManager alloc] init] getColor: @"AddCardViewController" :@"Commit_Title"]; 

   [commit.titleLabel setTextColor: color];

   color = [[[PersonalizationManager alloc] init] getColor: @"AddCardViewController" :@"Commit_Border"];

   [commit.layer setBorderColor:[color CGColor]];    
   [commit.layer setBorderWidth : 0.5f];
   [commit.layer setCornerRadius : 10.0f];
}
James
  • 24,676
  • 13
  • 84
  • 130
Mark Comix
  • 1,878
  • 7
  • 28
  • 44

5 Answers5

10

Well it's hard to say for sure, but is the text not visible because the color is the same? I see you set the text for all states but you may want to set the color for all states as well.

[commit setTextColor:[UIColor redColor] forState:UIControlStateSelected];
Jack Freeman
  • 1,414
  • 11
  • 18
  • Yeah!, that was the solution. You are right. I didn't think about the color, I tried and tested all over the Title's properties. Those are the good things of ask. Thank you very much – Mark Comix Feb 16 '12 at 14:48
  • I am a new ios developer and I think the api is changed cz there is no setTextColor method available. Use setTitleColor instead – sudip Jan 27 '13 at 14:43
4

With attributed text, make sure button Type = Custom (not System) in your storboard/xib.

David James
  • 2,430
  • 1
  • 26
  • 35
2

I noticed a peculiar thing. If I set the title using

  bttn.titleLabel.textColor = [UIColor purpleColor];

Then as soon as I click the button, the title disappears. But, if I use the following method :

[bttn setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];

Then everything is working correctly.

sudip
  • 2,781
  • 1
  • 29
  • 41
1

I guess you need to use [self.commit setTitle: NSLocal..., actually use self.commit overall for assignments (when you use @property (nonatomic, retain) or strong with ARC). I use @synthesize commit = _commit; and then only _commit for all the rest of the module.

ott--
  • 5,642
  • 4
  • 24
  • 27
0

As Jack says, it's the "selected" state of the button that has got the same color of the background. You can change that color also in the Storyboard:

  • select the button
  • in Attributes Inspector -> State Config -> select "highlighted"
  • select the correct "text color"
smukamuka
  • 1,442
  • 1
  • 15
  • 23