2014-01-10 43 views
0

當我通過xcode在多個設備上測試我的應用程序時,我的應用程序按預期顯示了一個工具欄。之後,我已經在應用商店中上傳了我的應用的更新。但突然之間,我意識到在某些iphones(ios 7.0.4)中,在應用程序更新之後,啓動它後會出現2個工具欄。我的應用程序顯示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]; 

如@Xeieshan下面說。

有沒有人注意到這樣的事情之前或沒有人知道爲什麼會發生這種情況?

截圖我的應用程序在我的iPhone 5上運行(v7.0.4)

enter image description here

截圖我的應用程序,通過appstore裏安裝的,更新後,在iPhone 5上運行(v7.0.4)

enter image description here

+1

請在這裏發佈一些代碼,或者我們不知道你是如何添加工具欄的。 –

+0

@XhackerLiu對不起,遲到了。我已經用代碼更新了這篇文章。 –

+0

您是否嘗試過從XCode安裝Release版本?這是關於xcode安裝vs appstore安裝的第一個差異。 –

回答

4

[[self navigationController].view addSubview:toolbar];
這是如何添加在UINavigationControllerUIToolbar,但我不能看到你的代碼,你做了嗎?

我想你在UIViewControllerUINavigationController上都加了UIToolbar

+0

我沒有使用這個。我現在無法在我的代碼中訪問,所以我會在幾個小時內測試它。 –

+0

我已經安裝了這個版本,現在我看到了這個問題。但還不明白爲什麼會發生這種情況。所以,我會用你的解決方案重新構建,在發佈之前我會運行這個版本並且讓你知道是否問題得到解決。 –

0

我建議不要將工具欄添加到UINavigationController.view,因爲它會破壞封裝(即使UIKit中沒有強制執行)。

相反,添加一個包含工具欄和一個包含的UINavigationController的自定義根視圖控制器。這還允許您正確佈局工具欄,以便它不覆蓋導航控制器中的視圖。

相關問題