2009-11-24 24 views
10

Vì vậy, ngay sau khi đẩy một bộ điều khiển nhằm tableView của tôi,Làm cách nào để thêm nút vào bên phải của điều hướng của tôi sau khi đẩy một bộ điều khiển chế độ xem khác?

 
// Override to support row selection in the table view. 
- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Navigation logic may go here -- 
    // for example, create and push another view controller. 
    AnotherViewController *anotherViewController = 
     [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; 
    [self.navigationController pushViewController:anotherViewController animated:YES]; 

Ok, vậy mà làm cho một trượt nhìn vào, và bạn có thể quay trở lại giao diện trước đó ("pop" giao diện hiện tại) bằng cách nhấn vào nút tự động tự động xuất hiện ở góc trên cùng bên trái của thanh điều hướng.

Ok, do đó nói rằng tôi muốn cư phía bên phải của thanh điều hướng với một nút DONE, như trong "Notes" ứng dụng mà đi kèm với iPhone. Tôi sẽ làm như thế nào?

Tôi đã thử mã như thế này:

 
    UIBarButtonItem * doneButton = 
    [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
    target:self 
    action:@selector(doneFunc) ]; 

    self.navigationController.navigationItem.rightBarButtonItem = doneButton ; // not it.. 

    [doneButton release] ; 

doneFunc được định nghĩa, và tất cả mọi thứ, chỉ cần nút không bao giờ xuất hiện ở phía bên phải ..

Trả lời

11

AH. Bạn phải làm:

 
- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    AnotherViewController *anotherViewController = 
     [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; 
    [self.navigationController pushViewController:anotherViewController animated:YES]; 


    UIBarButtonItem * doneButton = 
    [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
    target:self 
    action:@selector(doneFunc) ]; 

    anotherViewController.navigationItem.rightBarButtonItem = doneButton ; 

    [doneButton release] ; 
} 

Ai sẽ chia sẻ nó.

+14

Bạn nên chấp nhận câu trả lời của Thomas thay vì câu trả lời của chính bạn. – titaniumdecoy

30

Mã bạn đăng tải sẽ làm việc tốt, tôi nghĩ. Câu hỏi là, bạn đã đặt nó ở đâu? Tôi sẽ đặt nó vào phương pháp -viewDidLoad của bộ điều khiển chế độ xem mà bạn đang đẩy. Nếu bạn cần các nút khác nhau tùy thuộc vào nội dung bạn đang hiển thị thì bạn có thể thực hiện theo phương pháp -viewWillAppear:.

Cập nhật: Thực ra, tôi nghĩ rằng bạn cần phải thay đổi

self.navigationController.navigationItem.rightBarButtonItem = doneButton; 

để

self.navigationItem.rightBarButtonItem = doneButton; 
+0

Không, đã thử điều đó .. nhưng nó rất hữu ích. Tôi đã chuyển nó sang viewDidAppear. Có vẻ như vấn đề là nút phải được _HIDDEN_ bất cứ khi nào một bộ điều khiển xem mới được đẩy lên trên ngăn xếp – bobobobo

+0

Tôi đã cập nhật câu trả lời của mình. Tôi nghĩ rằng có một lỗi trong mã của bạn. Hãy cho tôi biết nếu điều này sửa chữa nó. –

+0

Không, tôi đã thử điều đó, nhưng rightBarButtonItem vẫn __disappears__ khi bộ điều khiển xem mới được đẩy lên. – bobobobo

Các vấn đề liên quan