Set text for custom UIBarButtonItem

I need to set a header for a custom UIBarButtonItem.

I have the following code:

UIButton* backToRecent = [UIButton buttonWithType:UIButtonTypeCustom];
[backToRecent setImage:[UIImage imageNamed:@"back.png"]forState:UIControlStateNormal];

[backToRecent addTarget:self action:@selector(backToRecent) forControlEvents:UIControlEventTouchUpInside];
[backToRecent setFrame:CGRectMake(0, 0, 60, 30)];

UIBarButtonItem* backButtonItem = [[UIBarButtonItem alloc]initWithCustomView:backToRecent];
[backButtonItem setTitle:@"Recent"];
partViewController.navigationItem.leftBarButtonItem = backButtonItem;
[backButtonItem release];

But the button appears without the "recent" text.

+5
source share
2 answers

you should set the title to UIButton, not UIBarButtonItem

[backToRecent setTitle:@"Recent" forState:UIControlStateNormal];

and it’s not good to make the same variable and method name

[backToRecent addTarget:self action:@selector(backToRecent) forControlEvents:UIControlEventTouchUpInside];

it does not work because you use

[backToRecent setImage:[UIImage imageNamed:@"back.png"]forState:UIControlStateNormal];

try using

[backToRecent setBackgroundImage:[UIImage imageNamed:@"back.png"]forState:UIControlStateNormal];
+6
source

Muhammad, I suspect that you have already decided this, but this is an easy way. Hope this helps someone who is struggling with the same issue:

    UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Recent" style:UIBarButtonItemStyleBordered target:self action:@selector(backToRecent)];
    self.navigationItem.leftBarButtonItem = backButtonItem;
+16
source

All Articles