2013-08-21 25 views
6

Tôi muốn thay đổi UIBarButtonItem 's title.Tại sao tôi không thể thay đổi tiêu đề của UIBarButtonItem?

Nhưng mã này không hoạt động.

- (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] 
} 

Tôi không biết cách giải quyết vấn đề này.

Hãy cho tôi biết cách giải quyết vấn đề này.

+0

Bạn đã kiểm tra xem SmayUse có đúng không? –

+0

Ở đâu/làm thế nào bạn khai báo 'UIBarButtonItem' tôi đang thiếu nó trong ví dụ này. – rckoenes

Trả lời

-3

item.title = @"new title" nên làm việc.

+0

Về cơ bản OP đang nói về điều gì đó không nên xảy ra. Như những người khác đề nghị nó có thể không được khởi tạo đúng cách, nhưng tôi không nghĩ rằng đó là trường hợp. Tôi nghi ngờ lý do là một cái gì đó thậm chí dumber mà tôi thậm chí không thể nghĩ đến. –

-1

Bạn phải đảm bảo nút được khởi tạo. Nếu nó là một phần của tệp .xib, hãy đảm bảo bạn đã liên kết tệp đó với số @property của bạn cũng đã được liên kết với một tệp .2ib. Nếu không, bạn cần phải khởi tạo nó theo chương trình. Ngoài ra, bạn nên sử dụng phương thức setTitle:forState:.

+0

UIBarButtonItem không có phương thức được gọi là 'setTitle: forState:'. – hgwhittle

5

Khởi UIBarButtonItem của bạn như thế này:

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

self.navigationItem.rightBarButtonItem = _smay; 

Sau đó, nếu bạn muốn thay đổi tiêu đề ở một nơi khác trong mã của bạn:

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

IOS 8 và cao hơn

UIBarButtonItemStyleBordered không được chấp nhận, vì vậy hãy sử dụng bên dưới.

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

Tôi đã làm theo cách của mình.Nhưng Mã không thể thay đổi tiêu đề. – Rukkora

+0

Vui lòng đăng mã nơi bạn đang khởi tạo UIBarButtonItem – hgwhittle

+0

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

0

nếu u muốn thay đổi tiêu đề của thanh điều hướng lập trình có nghĩa

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

navigationController.rightBarButtonItem = aDoneItem; 

aDoneItem.title = @"Something";