1

所以我的 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 但将第一个代码简介放在其中任何一个中都不能解决问题。

4

1 回答 1

0

自己解决了,因为按钮从未添加到笔尖,初始化 UIViewController 没有帮助。我必须初始化我的视图控制器。

换句话说,将:替换UIViewController *control = [[ViewController alloc] initWithNibName:@"myNib" bundle:nil];为:MyViewControllerClassName *control = [[MyViewControllerClassName alloc] initWithNibName:@"myNib" bundle:nil];希望这对将来的其他人有所帮助,如果您愿意的话,感谢您抽出宝贵的时间阅读本文!

于 2013-03-17T07:37:48.640 回答