添加類似navigationController自帶的返回按鈕,效果如下:
一、UINavigationcontroller自帶的navigationBar 是無法添加左箭頭的返回按鈕的
在網上搜索了一下 但是真的有方法可以添加成功,但是前提是該 navigationBar不是NavigationController自帶的。
如果是自帶的navigationBar就無法添加成功,會出現
- Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot call setItems:animated: directly on a UINavigationBar managed by a controller.'
這樣的錯誤,意思就是“ 蘋果不允許 直接對受一個Controller控制的naviBar 進行 setItems操作”, 仔細一查,真的有這樣的規定
"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怎么添加 左箭頭的返回按鈕代碼,這段代碼想必看了很多次了吧,哈哈,不厭其煩的在貼一遍好了
- UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@""];
- [self.naviBar pushNavigationItem:navigationItem animated:NO];
- self.naviBar.delegate = self;
- //創建一個右邊按鈕
- UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右邊"
- style:UIBarButtonItemStyleDone
- target:self
- action:@selector(clickRightButton)];
- [navigationItem setRightBarButtonItem:rightButton];
- [navigationItem setTitle:@"我的頁面"];
- UINavigationItem *item = [self.naviBar.items objectAtIndex:0];
- [self.naviBar pushNavigationItem:item animated:YES];
- UINavigationItem *back = [[UINavigationItem alloc] initWithTitle:@"Back"];
- NSArray *items = [[NSArray alloc] initWithObjects:back,item,nil];
- [self.naviBar setItems:items animated:NO];
如何捕獲左箭頭返回按鈕的事件呢? 你需要去實現 UINavigationBarDelegate 協議里面的方法。
- - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
- {
- //在此處添加點擊back按鈕之后的操作代碼
- NSLog(@"aaaaaaaaaaaaa");
- return FALSE;
- }
最后貼出運行的效果圖