3

我有以下代码直接取自 Apple 的 NavBar 示例代码。我将它放在 viewDidLoad 方法中,用于我的应用程序中以模态方式呈现的视图,但它不起作用。

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

有什么建议么?

4

4 回答 4

2

好的解释解决方案:

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

  1. 在 viewController 的 nib 中添加一个UINavigationBar并在此处添加“添加”按钮以及您需要设置的所有内容。
  2. 您可以使用pushViewController:animated: 以模态方式显示将在导航堆栈上的 viewController 并UINavigationBar让您添加按钮
  3. 如果您的第一个 viewController 不是 a UINavigationController,则使用pushViewController:animated:不会解决它,因此您可以UINavigationController使用 viewController 作为 rootViewController 呈现模态:
 YourViewController *viewController =[[[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil] autorelease];
    UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease];
    [self.navigationController presentModalViewController:navController animated:YES];

希望这有帮助

于 2011-09-23T05:02:21.533 回答
1

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

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

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

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

也许它可以解决你的问题。

于 2011-09-23T04:37:18.320 回答
0

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

  1. 我不会自动释放 UIBarButtonItem。对于视图控制器来说,这往往是不可靠的,因此将按钮添加到您要在清理时释放的事物列表中

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

    clearAllButton = [[UIBarButtonItem alloc] initWithTitle:@"Clear All" style:UIBarButtonItemStylePlain target:self action:@selector(rightButtonPressed:)];

    [[self navigationItem] setRightBarButtonItem:clearAllButton];

于 2011-09-23T04:18:47.297 回答
-1

在真实设备上运行您的应用程序。在 iOS6 中,它不适用于模拟器。

于 2012-10-22T13:57:46.693 回答