2013-07-23 5 views
1

Я пытаюсь установить название элемента UIBarbutton в зависимости от того, были ли нажаты кнопки или нет, я думаю, что я очень близко, но не уверен, почему он не работает. Я использую раскадровку и имя barbuttons/метод «share1» и все у меня есть он подключен к нему на раскадровке и Heres мой код до сих пор:Xcode: Изменение названия элемента UIBarButton при нажатии?

в моей .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

Прежде всего. Вы можете использовать self.sharepressed вместо _sharepressed. Используйте только второй способ внутри методов инициализатора, сеттера и геттера. И я предлагаю вам использовать заглавные буквы для обозначения того, когда начинается новое слово в имени переменной. Например, вместо sharepressed используйте sharePressed, это облегчает чтение специально, когда имя действительно длинное.

Теперь о вашем коде. Вы не хотите снова выделять self.navigationItem.rightBarButtonItem, когда действие происходит. То, что вы можете сделать, это просто изменить заголовок. Лучше использовать что-то вроде этого:

  • Если вы используете навигацию контроллер

    self.title = @"Share"; 
    
  • Если вы используете панель навигации

    self.navigationBar.title = @"Share"; // navigationBar is the name you gave to the object 
    
Смежные вопросы