当我在多个设备中通过xcode测试我的应用时,我的应用会按预期显示一个工具栏。之后我在应用商店上传了我的应用更新。但突然之间,我意识到在某些iphone(ios 7.0.4)中,在应用程序更新后,启动它时会出现2个工具栏。
我在此控制器的viewDidLoad
函数中以编程方式添加工具栏。
UIImage* leftImg = [UIImage imageNamed:@"left.png"];
UIImage* rightImg = [UIImage imageNamed:@"right.png"];
CGRect frame = CGRectMake(0, 0, leftImg.size.width, leftImg.size.height);
UIButton* lefButton = [[UIButton alloc] initWithFrame:frame];
UIButton* rigButton = [[UIButton alloc] initWithFrame:frame];
[lefButton setTitle:@"" forState:UIControlStateNormal & UIControlStateHighlighted];
[rigButton setTitle:@"" forState:UIControlStateNormal & UIControlStateHighlighted];
[lefButton setImage:leftImg forState:UIControlStateNormal];
[lefButton setImage:leftImg forState:UIControlStateSelected];
[rigButton setImage:rightImg forState:UIControlStateNormal];
[rigButton setImage:rightImg forState:UIControlStateSelected];
[lefButton addTarget:self action:@selector(loadPrevChapter:) forControlEvents:UIControlEventTouchUpInside];
[rigButton addTarget:self action:@selector(loadNextChapter:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *itemLeft = [[UIBarButtonItem alloc] initWithCustomView:lefButton];
UIBarButtonItem *itemRight = [[UIBarButtonItem alloc] initWithCustomView:rigButton];
// In case i want to add Space between barbuttonitems
UIBarButtonItem *flexiableItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
// add items to toolbar
NSArray *items = [NSArray arrayWithObjects:itemLeft, flexiableItem, itemRight, nil];
self.toolbarItems = items;
[self.navigationController setToolbarHidden:NO animated:NO];
UIImage *toolbarBgImage = [UIImage imageNamed:tlbImg];
UIImage *navbarBgImage = ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) ? [UIImage imageNamed:navImgIos7] : [UIImage imageNamed:navImg];
[[UINavigationBar appearance] setBackgroundImage:navbarBgImage forBarMetrics:UIBarMetricsDefault];
[[UIToolbar appearance] setBackgroundImage:toolbarBgImage forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
但是我没有在导航控制器上添加这个工具栏:
[[self navigationController].view addSubview:_toolbar];
之前有没有人注意到这样的事情,或者有人知道为什么会这样吗?
我的iPhone 5(v7.0.4)上运行的应用程序的屏幕截图
我的应用程序的屏幕截图,通过appstore安装,更新后,在iPhone 5上运行(v7.0.4)
答案 0 :(得分:4)
[[self navigationController].view addSubview:toolbar];
这是如何在UIToolbar
中添加UINavigationController
,但我无法在您执行此操作时看到您的代码?
我认为您要在UIToolbar
和UIViewController
上添加UINavigationController
。
答案 1 :(得分:0)
我建议不要将工具栏添加到UINavigationController.view
,因为它打破了封装(即使在UIKit中没有强制执行)。
相反,添加一个包含工具栏和包含的UINavigationController的自定义根视图控制器。这也允许您正确布局工具栏,使其不覆盖导航控制器中的视图。