【问题标题】:Changing Navigatiobar back button action in ios6/ ios 7 compatible applications在 ios 6/ios 7 兼容应用程序中更改导航返回按钮操作
【发布时间】:2014-01-22 07:25:41
【问题描述】:

我有一个导航控制器应用程序,我需要为导航返回栏按钮设置自定义操作。尝试了一些变通方法,但尚未找到解决方案。

试过了

  UIBarButtonItem *backBarItem  = self.navigationItem.leftBarButtonItem;
  backBarItem.target = self;
  backBarItem.action = @selector(popToHomeViewController);

结果:没有效果。后退按钮弹出到导航堆栈中的前一个 viewController

  UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithTitle:backBarItem.title style:backBarItem.style target:self action:@selector(popViewController)];
  self.navigationItem.leftBarButtonItem = customBarItem;

结果:没有效果。后退按钮弹出到导航堆栈中的前一个 viewController

  UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithTitle:@"back" style:backBarItem.style target:self action:@selector(popViewController)];
  self.navigationItem.leftBarButtonItem = customBarItem;

结果:现在我的选择器被完美地调用并导航到所需的 viewController。这里的问题是后退按钮不像原生后退按钮。它没有粗体的“

有没有更好的解决方案来确保带有自定义选择器的 ios 6 和 ios 7 兼容导航返回按钮?

【问题讨论】:

  • 仅供参考,后退按钮中的“
  • 是的。那么我们如何在自定义时实现该样式,该样式在 ios 6 和 ios 7 中作为其原生的后退栏按钮出现

标签: ios objective-c uinavigationcontroller uinavigationitem


【解决方案1】:

试试这个简单的例子会帮助你..

- (void)viewDidLoad {
    [super viewDidLoad];
UIImage *buttonImage = [UIImage imageNamed:@"back.png"];

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

[button setImage:buttonImage forState:UIControlStateNormal];


button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

 [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];

self.navigationItem.leftBarButtonItem = customBarItem;
[customBarItem release];
}

-(void)back {

[self.navigationController popViewControllerAnimated:YES];
}

确保在资源文件夹中有一个导航栏后退按钮大小的按钮图像,名称为 back.png

如果需要任何其他帮助,请随时联系。

编码愉快!!!!!!

【讨论】:

    【解决方案2】:

    试试这个

    viewController.navigationItem.hidesBackButton = YES;
    //set custom image to button if needed
    UIImage *backButtonImage = [UIImage imageNamed:@"back"];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:backButtonImage forState:UIControlStateNormal];
    button.frame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);
    [button addTarget:viewController action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
    
    UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height)];
    [backButtonView addSubview:button];
    
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:backButtonView];
    viewController.navigationItem.leftBarButtonItem = customBarItem;
    

    back 方法中你可以自定义

    - (void)back {
        //Your code
    }
    

    【讨论】:

    • 我们需要添加两张图片,在这种情况下,一张用于ios 6,一张用于ios 7,如果操作系统再次更改其后退按钮样式,它看起来很奇怪吧?
    • 如何使用UINavigationcontroller- (void)viewWillDisappear:(BOOL)animated- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 委托方法来更改后退按钮操作..?
    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2013-10-03
    • 1970-01-01
    相关资源
    最近更新 更多