2009-08-30 30 views
14

Tôi có một UINavigationController được đẩy một DetailsViewController. Trong DetailsViewController này, tôi muốn sử dụng thanh công cụ đi kèm với mọi UINavigationController (ít nhất, kể từ iPhone OS3.0).Các mục UIToolbar không hiển thị

Vì vậy, trong viewDidLoad trong DetailsViewController của tôi, tôi tạo ra một UIBarButtonItem, tôi thêm nó vào một mảng và trao nó đi với bộ điều khiển chuyển hướng:

- (void) viewDidLoad { 
    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(selectTemplate)]; 
    NSArray *items = [NSArray arrayWithObject: item]; 

    TestUIAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
    UINavigationController *navController = delegate.navigationController; 

    [navController setToolbarItems: items animated:NO];  
    [navController setToolbarHidden: NO animated: YES]; 
} 

Nhưng, đối với một số lý do, trong khi UIToolbar khá sôi động trên để màn hình, mục không được thêm vào thanh công cụ.

Có một số loại thứ tự cụ thể phải được thực hiện với UIToolbar để làm việc này không?

P.S .: ứng dụng ở chế độ ngang (cưỡng bức) và navigationController.view có biến đổi xoay vòng trên đó. Có thể có bất cứ điều gì để làm với nó?

Trả lời

37

Đã thực hiện thêm một số công cụ đào và gỡ lỗi và tôi đã đi đến kết luận rằng cách tiếp cận của tôi cố gắng sửa đổi navigationController là sai. Thay vào đó, tôi chỉ nên thiết lập thuộc tính toolbarItems của DetailsViewController.

Sau đó, mã của tôi làm việc tốt:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:@selector(selectTemplate)]; 

     NSArray *myToolbarItems = [[NSArray alloc] initWithObjects: item, nil];   
     [self setToolbarItems: myToolbarItems]; 
     [myToolbarItems release]; 

    } 
    return self; 
} 
+1

bình luận ngắn - đó phân bổ UIBarButtonItem vẻ như nó sẽ bị rò rỉ. Bạn có lẽ nên đặt nó để tự động phát hành. –

+1

Ồ, đúng vậy. Nhưng NSArray vẫn giữ nó, vì vậy tôi chỉ có thể phát hành _item_ sau khi thêm nó vào mảng thay vào đó, phải không? – NSSec

+0

Tôi đã làm một -1 trên cos này những gì bạn đã cho phép bạn hiển thị nó cho một viewcontroller, nó không làm theo tất cả các bộ điều khiển xem tiếp theo thông qua cuộc sống của chuyển hướng ... đó là những gì hầu hết các thanh công cụ sẽ không làm. – Jann

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