当splitview处于纵向时,弹出按钮不可见

时间:2013-05-29 13:58:55

标签: ipad uisplitviewcontroller

我已将iPad的另一个故事板添加到我的应用程序中,尝试制作我的第一个通用应用程序。

我开始使用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:@""];

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

现在的问题是我搞错了故事板。 在app启动时,我想看左边的菜单(MasterViewController)和右边有一些数据的tableview(DetailViewController)。

因此,将Split View Controller连接到Detail View Controller的关系segue是“详细视图控制器”类型。

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

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

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

我希望自己足够清楚。

2 个答案:

答案 0 :(得分:0)

如果我得到你想做的 - 然后添加背景到topBatButton所以你可以这样做: 在DetailViewController.m

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

将图像设置为条形项目:

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

将标题设置为条形项目:

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

答案 1 :(得分:0)

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

根据文档:

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

所以我认为反过来也是正确的