我已将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。
所以现在发生的是当方向是纵向时出现菜单按钮,但如果我点击菜单的“主页”选项,按钮就会消失。
该按钮应该在我要创建的所有不同细节视图控制器上可见,因此非常重要。
我希望自己足够清楚。
答案 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,则会忽略此属性。”
所以我认为反过来也是正确的