所以我的 rightbarbuttonitem 消失有问题。我有两种加载这个视图的方法,第一次启动它在用户输入他们的名字后加载它(从初始视图)。第二次(在应用程序退出后),它检查该名称是否存在于我存储的数据库中,如果存在,它会立即加载视图。这第二次是按钮不显示的地方。
该按钮最初是在我的视图的 viewDidLoad 中设置的(并且仍然在此处设置为第一次加载):
if (self.navigationItem.rightBarButtonItem == nil){
addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(buttonPressed)];
self.navigationItem.rightBarButtonItem = addButton;
[self.navigationItem.rightBarButtonItem retain];
}
然后在我的 AppDelegate 的 .m 中,我添加了按钮,认为这将在第二次加载时解决它:
if(success){
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
UIViewController *control = [[ViewController alloc] initWithNibName:@"myNib" bundle:nil];
[control retain];
UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController:control];
[navControl retain];
[self.window setRootViewController:navControl];
if (navControl.navigationItem.rightBarButtonItem == nil){
addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(buttonPressed)];
navControl.navigationItem.rightBarButtonItem = addButton;
[navControl.navigationItem.rightBarButtonItem retain];
}
//[navControl release];
[self.window makeKeyAndVisible];
return;
这是 App Delegate 的标头和我的视图标头中 addButton 的声明:
UIBarButtonItem *addButton;
@property (nonatomic, retain) UIBarButtonItem *addButton
其他帖子说要检查 viewDidLoad/viewWillAppear 但将第一个代码简介放在其中任何一个中都不能解决问题。