我试图设置我的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;
}
}
非常感谢任何帮助。
答案 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