0

我在我的应用程序中添加了另一个适用于 iPad 的 Storyboard,试图制作我的第一个通用应用程序。

我从 UISplitViewController 开始,左侧有一个菜单,右侧有一个详细控制器。

我已经在详细视图中自定义了导航栏,现在弹出按钮(当 iPad 处于纵向时应该显示菜单的那个)没有显示。

这是我用来在 viewDidLoad 中自定义导航栏的代码:

UIImage *navBarImg = [UIImage imageNamed:@"someimage"];
[self.navigationController.navigationBar setBackgroundImage:navBarImg forBarMetrics:UIBarMetricsDefault];
UIImage *logo = [UIImage imageNamed:@"logo"];
self.navBar.titleView = [[UIImageView alloc] initWithImage:logo];

然后,在拆分视图“willHideViewController”的委托方法中,我尝试自定义菜单按钮:

UIImage *menuBtn = [UIImage imageNamed:@"menu"];
menuBtn = [menuBtn resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 4.5, 0.0, 4.5)];
barButtonItem.image = menuBtn;
barButtonItem.title = NSLocalizedString(@"Menu", nil);
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;

我尝试删除导航栏和菜单按钮自定义,然后显示按钮。我的代码有什么问题?

编辑:

按照 Nazir 的建议,我在 viewDidLoad 方法中添加了以下代码:

UIImage *menuBtn = [UIImage imageNamed:@"menu"];
menuBtn = [menuBtn resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 4.5, 0.0, 4.5)];
[self.navigationItem.leftBarButtonItem setBackgroundImage:menuBtn forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.navigationItem.leftBarButtonItem setTitle:@""];

我忘了那个按钮不需要标题,但如果我不设置它,按钮就不会出现。

现在的问题是我把故事板弄乱了。在应用程序启动时,我想看到左侧的菜单(MasterViewController)和右侧的带有一些数据的表格视图(DetailViewController)。

因此,将拆分视图控制器连接到详细视图控制器的关系是“详细视图控制器”类型。

现在在菜单中,除了所有其他选项之外,还有第一个选项用于返回第一个详细视图控制器(一种“主页​​”选项),所以我还连接了主视图控制器和详细视图控制器使用“替换”segue。

所以现在发生的情况是,当方向是纵向时,菜单按钮会出现,但是如果我点击菜单的“主页”选项,按钮就会消失。

该按钮应该在我将要创建的所有不同的细节视图控制器上可见,所以它非常重要。

我希望我说得够清楚。

4

2 回答 2

0

您不能拥有 titleView 和 leftBarButton 项目(如果我正确阅读了文档)

根据文档:

Titleview:“如果将此属性设置为自定义标题,则会显示它而不是标题。如果 leftBarButtonItem 不为零,则忽略此属性。”

所以我假设反之亦然

于 2013-05-29T14:15:13.320 回答
0

如果我得到了您想要做的事情 - 然后将背景添加到 topBatButton 以便您可以执行以下操作:在 DetailViewController.m 中执行

UIImage *menuBtn = [UIImage imageNamed:@"someimage"];

将图像设置为 Bar 项:

[self.navigationItem.leftBarButtonItem setBackgroundImage:menuBtn forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

将标题设置为 Bar 项目:

[self.navigationItem.leftBarButtonItem setTitle:@"sometitle"];

于 2013-05-29T14:12:26.043 回答