2013-08-21 15 views
6

Chcę zmienić UIBarButtonItem 's title.Dlaczego nie mogę zmienić tytułu UIBarButtonItem?

Ale ten kod nie działa.

- (void)viewDidLoad { 
    ...   
    [self smay]; 
} 

- (void)smay { 
    ... 

    AppDelegate *apd = (AppDelegate*)[[UIApplication sharedApplication]delegate]; 
    NSString *SmayUse = [NSString stringWithFormat:@"%d月%d日", 
          apd.newyear,apd.newmonth]; 
    [_smay setTitle:SmayUse] 
} 

Nie wiem, jak rozwiązać ten problem.

Podaj mi sposób rozwiązania tego problemu.

+0

Czy sprawdziłeś, czy SmayUse jest zerowe czy nie? –

+0

Gdzie/w jaki sposób deklarujesz 'UIBarButtonItem', czego mi brakuje w tym przykładzie. – rckoenes

Odpowiedz

-3

item.title = @"new title" powinno działać.

+0

Zasadniczo OP mówił o czymś, co nie powinno się zdarzyć. Jak inni sugerowali, może nie być poprawnie zainicjalizowany, ale nie sądzę, że tak jest. Wątpię, by powodem było coś jeszcze głupiego, o czym nawet nie myślę. –

-1

Musisz upewnić się, że przycisk jest zainicjowany. Jeśli jest to część pliku .xib, upewnij się, że jest on powiązany z Twoim @property, z którym powiązany jest również IBOutlet. W przeciwnym razie musisz go zainicjować programowo. Powinieneś także użyć metody setTitle:forState:.

+0

UIBarButtonItem nie ma metody o nazwie "setTitle: forState:". – hgwhittle

5

Inicjalizacja swoją UIBarButtonItem tak:

_smay = [[UIBarButtonItem alloc] initWithTitle:@"Your Title" 
      style:UIBarButtonItemStyleBordered 
      target:self action:@selector(yourMethod)]; 

self.navigationItem.rightBarButtonItem = _smay; 

Następnie, jeśli chcesz zmienić tytuł gdzieś indziej w kodzie:

[_smay setTitle:@"Your Other Title"]; 

IOS 8 i wyższej

UIBarButtonItemStyleBordered jest przestarzałe, więc użyj poniższego.

[[UIBarButtonItem alloc] initWithTitle:@"Your Title" 
       style:UIBarButtonItemStylePlain 
       target:self action:@selector(yourMethod)]; 
+0

Poszedłem. Ale kod nie może zmienić tytułu. – Rukkora

+0

Proszę zaksięgować kod, w którym inicjalizujesz swój UIBarButtonItem – hgwhittle

+0

- (void) oped: (NSInteger) newy: (NSInteger) newd – Rukkora

0

jeśli u chcą zmienić tytuł pasku nawigacyjnym programowo oznacza

UIBarButtonItem *aDoneItem = [UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleBordered 
    target:self 
    action:@selector(toggleEdit:)]; 

navigationController.rightBarButtonItem = aDoneItem; 

aDoneItem.title = @"Something"; 
Powiązane problemy