2009-10-30 24 views
7

Tôi đang làm việc trên chế độ xem của iPhone bao gồm 3 phần tử, UITextView, UIToolBar với UIBarButtonItem.Làm thế nào để thay đổi kiểu UIBarButtonItem trong UINaviagationBar khi chạy?

Mục đích là, tôi muốn UIBarButtonItem thay đổi kiểu của nó từ 'chỉnh sửa' (UIBarButtonSystemItemEdit) thành 'Xong' (UIBarButtonSystemItemDone) và cập nhật bộ chọn mới thành phương thức mới.

Trước hết, tôi đã thử mã sau nhưng nó không hoạt động:

Bạn có thể giúp tôi về ý tưởng này không?

Trả lời

14

Có nút thanh dựng sẵn có hành vi này, bạn nhận được thông qua thuộc tính editButtonItem của UIViewContoller. Tabbing nút đó sẽ thay đổi bộ điều khiển xem nó đến từ chế độ chỉnh sửa, và chuyển nút thành một nút thực hiện.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 
+0

cảm ơn bạn rất nhiều! câu trả lời tốt nhất với một giải pháp thực sự cho tất cả các câu hỏi tương tự! – itinance

4

để thay đổi nút nút Done sử dụng này

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone]; 

để thay đổi nút Edit nút sử dụng này

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered]; 
5

Nếu bạn đã thêm nút thông qua IB sau đó đảm bảo để đặt số nhận dạng thành Tùy chỉnh Cũng phân bổ nút trong .h với IBOutlet thích hợp và Thuộc tính Tổng hợp nút trong .m

Sau đó, trong mã của bạn làm như sau:

// Set to done 
editButton.style = UIBarButtonItemStyleDone; 
editButton.title = @"Done"; 

// Set back to edit 
editButton.style = UIBarButtonItemStyleBordered; 
editButton.title = @"Edit"; 
2

tôi đã kết thúc làm một cái gì đó như thế này. Thật không may, thiết lập tiêu đề trực tiếp không hoạt động, vì một lý do nào đó là không và sẽ không cho phép tôi đặt nó thành một giá trị khác. Các self.editButton xuất phát từ một IBOutlet với các mục tiêu và hành động thiết lập. Mã này sử dụng ARC. Tôi hi vọng điêu nay se giup được ai đo.

 NSString *title = app.settings.editing 
         ? NSLocalizedString(@"Done", @"") 
         : NSLocalizedString(@"Edit", @""); 

     UIBarButtonItemStyle style = app.settings.editing 
            ? UIBarButtonItemStyleDone 
            : UIBarButtonItemStyleBordered; 

     UIBarButtonItem *editButton 
      = [[UIBarButtonItem alloc] initWithTitle:title 
               style:style 
               target:self.editButton.target 
               action:self.editButton.action]; 

     self.navigationItem.rightBarButtonItem = editButton; 
Các vấn đề liên quan