“self.navigationItem.rightBarButtonItem”不起作用

时间:2011-09-23 04:03:50

标签: iphone objective-c ios viewdidload rightbarbuttonitem

我直接从Apple的NavBar示例代码中获取以下代码。我把它放在viewDidLoad方法中,用于我的应用程序中以模态方式呈现的视图,它不会工作。

UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"AddTitle", @"")
                                                               style:UIBarButtonItemStyleBordered
                                                              target:self
                                                              action:@selector(addAction:)] autorelease];
self.navigationItem.rightBarButtonItem = addButton;

任何建议?

4 个答案:

答案 0 :(得分:2)

好的解释了解决方案:

presentModalViewController:animated:以模态方式呈现一个viewController,它没有UINavigationBar,所以你可以做一些事情:

  1. 在viewController的笔尖中添加UINavigationBar并在其中添加“添加”按钮以及您需要设置的所有内容。
  2. 您可以使用pushViewController:animated:以模态方式显示viewController,它将位于导航堆栈上并让UINavigationBar为您添加按钮
  3. 如果你的第一个viewController不是UINavigationController,使用pushViewController:animated:将无法解决它,所以你可以使用viewController以UINavigationController形式提供一个 YourViewController *viewController =[[[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil] autorelease]; UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease]; [self.navigationController presentModalViewController:navController animated:YES]; 作为rootViewController:
  4. {{1}}

    希望这有助于

答案 1 :(得分:1)

您需要在显示其他视图的页面上使用这些代码行。

sceondController *obj=[[[sceondController alloc] initWithNibName:@"sceondController" bundle:nil] autorelease];
        UINavigationController *navController=[[[UINavigationController alloc] initWithRootViewController:obj] autorelease];

        [self.navigationController presentModalViewController:navController animated:NO];

并在第二个视图中使用与制作导航按钮相同的代码。

可能会解决你的问题。

答案 2 :(得分:0)

我假设你的视图控制器实际上是一个UINavigationController,其他一切都已到位。在这种情况下,我会改变两件事。

  1. 我不会自动释放UIBarButtonItem。这对于视图控制器来说往往是不可靠的,所以将按钮添加到您的清单中以解除清除

  2. 我会使用setter函数来设置按钮。这是我的导航控制器中的代码

    clearAllButton = [[UIBarButtonItem alloc] initWithTitle:@“全部清除”样式:UIBarButtonItemStylePlain target:self action:@selector(rightButtonPressed :));

    [[self navigationItem] setRightBarButtonItem:clearAllButton];

答案 3 :(得分:0)

在真实设备中运行您的应用。在iOS6中,它无法在模拟器上运行。