【问题标题】:how to override the functionality of the navigation bar created by pushViewController如何覆盖 pushViewController 创建的导航栏的功能
【发布时间】:2015-10-07 11:58:39
【问题描述】:

我有一个视图控制器,它使用pushViewController 呈现。此方法向视图控制器提供navigation bar,左侧有一个后退按钮(这是一个可可方法,由苹果公司创建)。

我希望后退按钮完成它现在所做的事情,但我也想用它的动画来调整一些东西。

如何添加在按下按钮和实际动画之间起作用的代码并返回?

谢谢。

【问题讨论】:

    标签: ios ipad ios9 viewcontroller xcode7


    【解决方案1】:

    我通过添加这样的自定义后退按钮来做类似的事情:

    UIImage *backArrow = [UIImage imageNamed:backButtonImage];
    UIButton *aBackButton = [UIButton buttonWithType:UIButtonTypeSystem];
    CGSize aBackButtonTextSize = [@"Back" sizeWithFont:[UIFont systemFontOfSize:17]];
    aBackButton.frame = CGRectMake(0.0, 0.0, aBackButtonTextSize.width + backArrow.size.width, self.navigationController.navigationBar.frame.size.height);
    aBackButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    SEL backSelector = NSSelectorFromString(@"backAction");
    [aBackButton addTarget:self action:backSelector forControlEvents:UIControlEventTouchUpInside];
    [aBackButton setTitle:@"Back" forState:UIControlStateNormal];
    [aBackButton setImage:backArrow forState:UIControlStateNormal];
    [aBackButton setExclusiveTouch:YES];
    
    aBackButton.titleLabel.font = [UIFont systemFontOfSize:17];
    
    UIBarButtonItem *aLeftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aBackButton];
    UIBarButtonItem *aNegativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    aNegativeSpacer.width = -8;
    self.navigationItem.leftBarButtonItems = @[aNegativeSpacer, aLeftBarButtonItem];
    

    然后处理用户点击并在此处添加我自己的东西:

    - (void)backAction {
       // My own handlings
    }
    

    【讨论】:

    • 问题是我真的不知道按下“原始”按钮时会发生什么,因此很难在新按钮中重新创建
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多