2010-08-31 22 views
7

Tôi có một UIViewController với một UITableView trong đó, và cũng đã thêm một UINavigationBar. Tôi làm cách nào để thêm và nút "chỉnh sửa" và nút "+" trong thanh đó theo lập trình? (Tôi đã thử sử dụng IB, nhưng tiêu đề luôn được thay thế và không thêm các mục khác) Tôi không sử dụng UINavigationController. là UIViewController của tôi đứng một mình.Thêm các mục vào NavigationBar (Không sử dụng UINavigationController)

Đây là những gì tôi đã cố gắng nhưng không thành công:

UIBarButtonItem *barButton = 
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered 
                target:nil 
                action:nil]; 
UINavigationItem *editItem = [[UINavigationItem alloc] initWithTitle:@"Title"]; 
[editItem setLeftBarButtonItem:barButton animated:YES]; 
[navigationBar setItems:[NSArray arrayWithObject:editItem] animated:YES]; 

Trả lời

33

bạn UIViewController có một tài sản navigationItem. Bạn có thể thiết lập các mục nút thanh trái và phải với self.navigationItem.leftBarButtonItem = ...self.navigationItem.rightBarButtonItem = ...

Edit:

OK, tôi giả sử bạn có một tham chiếu đến UINavigationBar của bạn? Sau đó, tôi đoán bạn muốn thêm một đơn UINavigationItem với nó:

UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"A Title"]; 
theNavigationBar.items = [NSArray arrayWithObject:item]; 
[item release]; // or keep this as an instance variable 

và sau đó thiết lập của mục mà nút trái và phải:

theNavigationBar.topItem.leftBarButtonItem = ...; 
theNavigationBar.topItem.rightBarButtonItem = ...; 

tôi đã không cố gắng này, nhưng tôi nghĩ rằng nó nên công việc.

+0

Đây là phương pháp tương tự như vfn phải không? Tôi không làm việc. navigationItem được dự định sẽ được sử dụng khi sử dụng UINavigationController, đây không phải là trường hợp của tôi. – nacho4d

+0

Vâng, đó là cách tiếp cận tương tự. Tôi đã chỉnh sửa câu trả lời của mình và thêm một giải pháp khả thi khác. –

+0

Cảm ơn, nó đã hoạt động! – nacho4d

1
UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(theEditMethod:)];  
[viewController.navigationItem setLeftBarButtonItem:leftBarButton animated:NO]; 
[leftBarButton release]; 

UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(theAddMethod:)];  
[viewController.navigationItem setLeftBarButtonItem:rightBarButton animated:NO]; 
[rightBarButton release]; 
+0

Tôi đã thử phương thức viewDidLoad này của điều khiển (và thay thế viewController cho tự) nhưng không hoạt động. ; (. navigationItem được dự định sẽ được sử dụng khi sử dụng UINavigationController, đây không phải là trường hợp của tôi. – nacho4d

+0

Tại sao bạn không chuyển sang sử dụng bộ điều khiển điều hướng và đặt bộ điều khiển xem của bạn làm gốc của nó. Nó sẽ làm cho bạn dễ dàng hơn! – vfn

+0

Vì Trước tiên, tôi không điều hướng và thứ hai, tôi muốn tùy chỉnh chiều rộng của nó, một điều gì đó không thể thực hiện được với UINavigationController.Trên thực tế tôi đang làm việc trên một cách khác để điều hướng, vì vậy mục đích không phải là sử dụng UINavigationController – nacho4d

0

Bạn không cần phải thêm UINavigationItem vào UINavigationBar. Bạn có thể làm ví dụ này:

NSString *backButtonTittle=[NSString stringWithFormat:@"< %@",NSLocalizedString(@"backButton", nil)]; 
UIBarButtonItem *backCreateAccountNavBarItem=[[UIBarButtonItem alloc]initWithTitle:backButtonTittle style:UIBarButtonItemStylePlain target:self action:@selector(goToBackStep)]; 
self.createAccountNavBar.topItem.leftBarButtonItem=backCreateAccountNavBarItem; 
0

Chỉ cần sử dụng chế độ xem của bạnChuyển hướng của điều khiển Thuộc tínhItem.

như thế này:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(updateContent)]; 
Các vấn đề liên quan