添加類似navigationController自帶的返回按鈕


添加類似navigationController自帶的返回按鈕,效果如下:

左箭頭的返回按鈕

 

一、UINavigationcontroller自帶的navigationBar 是無法添加左箭頭的返回按鈕的

在網上搜索了一下 但是真的有方法可以添加成功,但是前提是該 navigationBar不是NavigationController自帶的。

如果是自帶的navigationBar就無法添加成功,會出現

 

[csharp]  view plain copy
  1. Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot call setItems:animated: directly on a UINavigationBar managed by a controller.'  


這樣的錯誤,意思就是“ 蘋果不允許 直接對受一個Controller控制的naviBar 進行 setItems操作”, 仔細一查,真的有這樣的規定

 

navigationController的屬性naviBar

"The navigation bar managed by the controller. Pushing, popping or setting navigation items on a managed navigation bar is not supported."

意思很明確了: 這個naviBar是受controller管理的,不支持Pushing, popping or setting navigation items操作。

看到這兒,我也很無語了,所以只好自己切圖了,切出左箭頭的樣式來添加leftBarButtonItem 了。

 

二、單獨的UINavigationBar添加左箭頭的返回按鈕

但是還是貼出來,單獨的一個NavigationBar怎么添加 左箭頭的返回按鈕代碼,這段代碼想必看了很多次了吧,哈哈,不厭其煩的在貼一遍好了

 

[csharp]  view plain copy
  1.     UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@""];  
  2.     [self.naviBar pushNavigationItem:navigationItem animated:NO];  
  3.     self.naviBar.delegate = self;  
  4.  //創建一個右邊按鈕  
  5.     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右邊"  
  6.                                                                     style:UIBarButtonItemStyleDone  
  7.                                                                    target:self  
  8.                                                                    action:@selector(clickRightButton)];  
  9. [navigationItem setRightBarButtonItem:rightButton];  
  10.     [navigationItem setTitle:@"我的頁面"];  
  11.     UINavigationItem *item = [self.naviBar.items objectAtIndex:0];  
  12.     [self.naviBar pushNavigationItem:item animated:YES];  
  13.     UINavigationItem *back = [[UINavigationItem alloc] initWithTitle:@"Back"];  
  14.     NSArray *items = [[NSArray alloc] initWithObjects:back,item,nil];  
  15.     [self.naviBar setItems:items animated:NO];  

 

 

如何捕獲左箭頭返回按鈕的事件呢? 你需要去實現 UINavigationBarDelegate 協議里面的方法。

 

[csharp]  view plain copy
  1. - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item  
  2. {  
  3.     //在此處添加點擊back按鈕之后的操作代碼  
  4.     NSLog(@"aaaaaaaaaaaaa");  
  5.     return FALSE;  
  6. }  


最后貼出運行的效果圖

 

naviBar添加左箭頭的返回按鈕


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM