2010-02-24 24 views

Trả lời

17

Tôi vật lộn với một số phương pháp tiếp cận này và cuối cùng đã tìm ra bằng cách sử dụng tất cả các câu trả lời từ một số nguồn. Có một vài thủ thuật; Đoạn này sẽ hiển thị tất cả (Tôi đã tạo ra một tùy chỉnh rightNavButton, nhưng bạn có thể thích ứng này một cách dễ dàng đối với bất kỳ UIBarButtonItem):

// Produces a nice "right arrow" style button that mirrors the back arrow 
// automatically added by the navController 
// 
UIImage *buttonImage = [UIImage imageNamed:@"forwardButton.png"]; 
UIButton *forwardButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[forwardButton setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[forwardButton setTitle:@"Meter" forState:UIControlStateNormal]; 
forwardButton.font = [UIFont boldSystemFontOfSize:12]; 
forwardButton.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 
[forwardButton addTarget:self action:@selector(showMeter) 
      forControlEvents:UIControlEventTouchUpInside]; 

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
      initWithCustomView:forwardButton]; 

Lưu ý: nó chỉ ra rằng nếu bạn cố gắng để thiết lập các mục tiêu và hành động trực tiếp trên mục nút sau khi gán chế độ xem tùy chỉnh bằng cách sử dụng UIButton mà nó sẽ không mất - bạn phải đặt mục tiêu và hành động trên chính nút đó - dường như các navBar sử dụng nút được cung cấp nguyên văn.

Đây là hình ảnh tôi đã sử dụng trên đục đen navBar (bạn có thể sử dụng bất cứ điều gì, rõ ràng): http://raretiger.com/images/forwardbutton.png

+3

Bạn có thể tải xuống, hình ảnh trong suốt tương thích với Retina tại đây: [link] http://handleopenurl.com/assets/docs/arrow-buttons.zip [/ link] Mũi tên quay lại có một mũ trái của 15, số tiền là 5 (ở các nút kích thước bình thường.) –

+2

Bạn đã bị rò rỉ bộ nhớ khi bạn đang phân bổ 'UIBarButtonItem' 'giữ lại +1' và sau đó gán nó cho thuộc tính' rightBarButtonItem' 'giữ nguyên +1'. Điều đó có nghĩa là UIBarButtonItem bây giờ sẽ có số lượng giữ lại là 2 và sẽ không bao giờ được phát hành. Bạn cần phải tự động trả lại UIBarButtonItem: 'self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView: forwardButton] autorelease];' – Camsoft

+1

liên kết hình ảnh đã biến mất – Esqarrouth

4

Bạn có thể tạo một UIImageView hoặc một UIButton với hình ảnh cần thiết sau đó sử dụng:

[[UIBarButtonItem alloc] initWithCustomView: arrowButton]; 

Hope this helps.

7

Tạo nền tùy chỉnh. Xem Creating a left-arrow button (like UINavigationBar's "back" style) on a UIToolbar để biết cách thực hiện.


Bạn có thể -pushNavigationItem:animated: để làm cho nút quay lại tích hợp xuất hiện, mặc dù bạn không thể chỉ định tác vụ tùy chỉnh cho nút đó.


Đối với phương pháp không có giấy tờ, bạn có thể sử dụng

UIButton* backButton = [UIButton buttonWithType:101]; 

để tạo ra một trở lại "nút".

+0

mã số cho một tiền đạo nút chỉ là gì? – ma11hew28

+0

@Matt: Đó không phải là loại nút tích hợp. – kennytm

+5

Hack nhanh, hơi muộn: nút chuyển tiếp là nút quay lại có thang tỷ lệ = -1 (-1,1) và textLabel có biến = scale (-1,1). – Cyrille

0

tiếp tục trên ý tưởng @Plamen Dragozov của: tôi nhận thấy nếu bạn rời khỏi UIButton như là, nó sẽ kích hoạt một điều chỉnh hình ảnh khi chạm vào và đó là hoàn toàn ngược lại những gì một nút điều hướng bình thường trở lại. Vì vậy, những gì tôi đã làm là để bỏ chọn "đánh dấu điều chỉnh hình ảnh" và nó hoạt động như một say mê.

hy vọng điều này sẽ giúp những người mới như tôi.

0

giải pháp More thanh lịch:

UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStylePlain target:self action:@selector(back:)]; 
[backButtonItem setBackgroundImage:[UIImage imageNamed:@"back.png"]  forState:UIControlStateNormal  barMetrics:UIBarMetricsDefault]; 
self.navigationItem.leftBarButtonItem = backButtonItem; 
0

Vấn đề của tôi đã được đổi tên nút quay lại xuất hiện trên bộ điều khiển xem đẩy. Tôi tìm thấy một cách giải quyết dơ bẩn và nếu bạn bỏ qua các vấn đề hoạt hình không lý tưởng, bạn sẽ nhận được một nút quay lại với tiêu đề bạn muốn.

Bí quyết là để thay đổi tiêu đề của VC đầu tiên trong viewWillDisappear và tái thiết lập nó tất nhiên trong viewWillAppear

(Không cần phải nói, theo mặc định, nếu không có leftBarButtonItem bộ, UINavigationController sẽ hiển thị một trở lại nút với tiêu đề của VC mà đẩy VC hiện hành)

trong VC nơi bạn đẩy VC hiện tại của bạn, làm

-(void) viewWillDisappear:(BOOL) animated { 
    [super viewWillDisappear:animated]; 
    self.title = @"Back"; 
} 

-(void) viewWillAppear:(BOOL) animated { 
    [super viewWillAppear:animated]; 
    self.title = @"Original Title"; 
} 
Các vấn đề liên quan