Когда вы помещаете контроллер представления в контроллер навигации, его backBarButtonItem будет установлен для возврата к предыдущему контроллеру представления, а не leftBarButtonItem. Если вы установите leftBarButtonItem, backBarButtonItem будет скрыт, и то же место будет заменено leftBarButtonItem.
И ваш код вообще не устанавливает leftBarButtonItem, поэтому, конечно, это ноль.
EDIT:
Мои тестовые коды. Я проверил backButtonItem и leftBarButtonItem с помощью следующих кодов, и они равны нулю. Вы правы. Но когда я коснулся кнопки «Назад» к предыдущему виду, ее цвет изменился, поэтому он был выделен. И это сработало хорошо до предыдущего представления контроллера Так что я думаю, что ваш код неправильный в каком-то другом месте, это делает кнопку возврата неактивной.
Листинг 1, класс RootViewController
// RootViewController.h
#import <UIKit/UIKit.h>
@interface RootViewController : UIViewController {
}
@end
// RootViewController.m
#import "RootViewController.h"
#import "MyViewController.h"
@implementation RootViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"RootView";
MyViewController *childView = [[[MyViewController alloc] init] autorelease];
UINavigationController *navCtrl = [[[UINavigationController alloc] initWithRootViewController:childView] autorelease];
[self.navigationController presentModalViewController:navCtrl animated:YES];
}
@end
Листинг 2, MyViewController
// MyViewController.h
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController {
}
@end
// MyViewController.m
#import "MyViewController.h"
#import "MyAnotherViewController.h"
@implementation MyViewController
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"MyView";
NSLog(@"%s backBarButtonItem:%@ leftBarButtonItem:%@",__FUNCTION__ ,self.navigationItem.backBarButtonItem, self.navigationItem.leftBarButtonItem);
MyAnotherViewController *childView = [[[MyAnotherViewController alloc] init] autorelease];
[self.navigationController pushViewController:childView animated:YES];
}
@end
Листинг 3, MyAnotherViewController
// MyAnotherViewController.h
#import <UIKit/UIKit.h>
@interface MyAnotherViewController : UIViewController {
}
@end
// MyAnotherViewController.m
#import "MyAnotherViewController.h"
@implementation MyAnotherViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Another View";
}
@end