Xcode:按下后更改我的UIBarButtonitem标题?

时间:2013-07-23 23:40:17

标签: ios objective-c uibarbuttonitem

我试图设置我的UIBarbutton项目标题取决于按钮是否被点击,我认为我非常接近但不确定为什么它不起作用。我正在使用一个故事板,而barbuttons的名称/方法是“share1”,我所拥有的只是它在故事板上与它连接,并且到目前为止我的代码是:

在我的.h:

- (IBAction)share1:(id)sender;

和我的.m:

#import "ViewController2.h"

@interface ViewController2 ()


@property (assign, nonatomic) BOOL sharepressed;


@end

@implementation ViewController2

- (IBAction)share1:(id)sender {

    //i am trying to open a menu in this but that shouldn't affect the button.

    if (self.sideMenu.isOpen) {
        self.sharepressed = YES;
        [self.sideMenu close];
    }

    else {
        [self.sideMenu open];

    }

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Share" style:UIBarButtonItemStyleBordered target:self action:@selector(share1:)];

}

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (_sharepressed) {
        self.navigationController.navigationItem.rightBarButtonItem  = [[UIBarButtonItem    alloc] initWithTitle:@"Hide" style:UIBarButtonItemStyleBordered target:self action:@selector(share1:)];
    _sharepressed |= _sharepressed;
    }
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

首先。您可能希望使用self.sharepressed代替_sharepressed。只在初始化器,setter和getter方法中使用第二种方法。我建议您使用大写字母表示变量名中的新单词何时开始。例如,代替sharepressed使用sharePressed,这使得在名称非常长时更容易阅读。

现在关于你的代码。当操作发生时,您不希望再次分配self.navigationItem.rightBarButtonItem。你可能想做的只是改变标题。更好地使用这样的东西:

  • 如果您使用的是导航控制器

    self.title = @"Share";
    
  • 如果您使用的是导航栏

    self.navigationBar.title = @"Share"; // navigationBar is the name you gave to the object