UINavigationBar 后退按钮在某些设备或模拟器上显示“后退”标题,而在其他设备或模拟器上显示以前的视图控制器标题

Mic*_*atz 5 objective-c uinavigationbar ios ios7

我有一个带有导航栏的应用程序,可以从一个视图控制器导航到下一个。在某些模拟器和设备上导航到下一个视图控制器时,后退按钮标题是“后退”,而在某些模拟器和设备上,后退按钮标题是第一个视图控制器的标题。

我真的很想明白为什么?

这不是更改后退按钮上的文本的问题。问题是,在某些模拟器和设备上,我看到了“back”标题,而在某些模拟器和设备上,我看到了前一个控制器的标题。在 20 多个模拟器和设备上进行了测试。

这是代码:

应用委托

#import "AppDelegate.h"
#import "FirstViewController.h"
#import "SecondViewController.h"

@interface AppDelegate ()
@property (nonatomic, strong) UINavigationController *navigationController;
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   FirstViewController *firstViewController = [[FirstViewController alloc]
                                              initWithNibName:nil
                                              bundle:nil];

    self.navigationController = [[UINavigationController alloc]
                                 initWithRootViewController:firstViewController];

    self.window = [[UIWindow alloc]
                   initWithFrame:[[UIScreen mainScreen]bounds]];

    self.window.rootViewController = self.navigationController;

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];


    return YES;
}
Run Code Online (Sandbox Code Playgroud)

第一个视图控制器

#import "FirstViewController.h"
#import "SecondViewController.h"

@interface FirstViewController ()
@property (nonatomic, strong) UIButton *btnDisplaySecondViewController;
@end

@implementation FirstViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}


-(void)performDisplaySecondViewController:(id)paramSender{
    SecondViewController *secondControllrt = [[SecondViewController alloc]
                                              initWithNibName:nil bundle:nil];
    [self.navigationController pushViewController:secondControllrt
                                         animated:YES];
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"First Controller";

    self.btnDisplaySecondViewController = [UIButton
                                           buttonWithType:UIButtonTypeSystem];

    [self.btnDisplaySecondViewController
     setTitle:@"Display Seconf View Controller"
     forState:UIControlStateNormal];

    [self.btnDisplaySecondViewController sizeToFit];

    self.btnDisplaySecondViewController.center = self.view.center;

    [self.btnDisplaySecondViewController addTarget:self
                                            action:@selector(performDisplaySecondViewController:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:self.btnDisplaySecondViewController];


    UIImageView *imageView =
    [[UIImageView alloc]
     initWithFrame:CGRectMake(0.0, 0.0, 100.0f, 40.0f)];

    imageView.contentMode = UIViewContentModeScaleAspectFit;

    UIImage *image = [UIImage imageNamed:@"ios7_0135"];

    [imageView setImage:image];

    self.navigationItem.titleView = imageView;
}
Run Code Online (Sandbox Code Playgroud)

第二个视图控制器

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Second Controller";
}
Run Code Online (Sandbox Code Playgroud)