iPhone SDK - >通过AppDelegate加载视图时,RightBarButtonItem消失

时间:2012-05-02 19:09:01

标签: uinavigationitem ios5

所以我的右栏按钮消失了。我有两种加载此视图的方法,第一次启动它在用户输入其名称后(从初始视图)加载它。第二次(在应用退出之后),它检查我的存储数据库中是否存在该名称,如果存在,则立即加载视图。第二次是按钮不显示的位置。

该按钮最初设置在我视图的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,但是将第一个代码嵌入其中任何一个都无法解决问题。

1 个答案:

答案 0 :(得分:0)

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

换句话说,将UIViewController *control = [[ViewController alloc] initWithNibName:@"myNib" bundle:nil];替换为:MyViewControllerClassName *control = [[MyViewControllerClassName alloc] initWithNibName:@"myNib" bundle:nil];希望这有助于将来的其他人,感谢您花时间阅读此内容,如果您这样做了!