Sealyu

--- 博客已迁移至: http://www.sealyu.com/blog

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  618 随笔 :: 87 文章 :: 225 评论 :: 0 Trackbacks

Yes! There is a way of using the backBarButton with a custom action. No, it’s not by overriding the backBarButton property of navigationItem. This is not an ugly solution with images that simulate the “Back”-button (arrow-shaped.) It’s possible to use the backBarButton for popping the current viewController as normal, but than with other animations such as UIViewAnimationTransitionCurlDown.

Enough said, the solution is simple. You have to subclass your navigationController’s  popViewControllerAnimated:(BOOL)animated. So create a custom navigationController:

customNavigationController.h

#import
@interface customNavigationController : UINavigationController {}
@end

And a custom “popViewControllerAnimated:(BOOL)animated”, this popViewControllerAnimated-function uses the “UIViewAnimationTransitionCurlDown” when popping from a SettingsTableView.

customNavigationController.m

#import "customNavigationController.h"
#import "SettingsTableController.h"
 
@implementation customNavigationController
 
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
if([[self.viewControllers lastObject] class] == [SettingsTableController class]){
 
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 1.00];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown
forView:self.view cache:NO];
 
UIViewController *viewController = [super popViewControllerAnimated:NO];
 
[UIView commitAnimations];
 
return viewController;
} else {
return [super popViewControllerAnimated:animated];
}
}
@end

Use your custom navigationController in your appDelegate:

customNavigationController *navigationController =
[[customNavigationController alloc]
initWithRootViewController:rootView];

posted on 2010-11-13 23:12 seal 阅读(595) 评论(0)  编辑  收藏 所属分类: iPhone

只有注册用户登录后才能发表评论。


网站导航: