2011-03-11 90 views
0

我正在開發一款應用程序,該應用程序應該是通用的,同時適用於iPad和iPhone。我想盡可能保持它們的接口類似。在iPhone應用程序中,我使用了Tab欄控制器,其中一個選項卡會轉到圖像選取器控制器。很明顯,我無法在iPad中做到這一點。所以我已經劫持了那個按鈕的控制來帶一個帶有圖像選擇器的popup控制器。這一切運作良好,除非我彈出彈出窗口時,它不在正確的位置。當我旋轉模擬器時,彈出窗口會轉到正確的位置,並在我回轉時保持不動。UIPopoverController placement

我的代碼是基於這個問題的代碼: Ipad UIImagePickerController and UIPopoverController error

爲什麼我的彈出不會在正確的位置?

+0

是否酥料餅最初出現在正確的位置,如果你持有它在一個特定的(橫向/縱向),或者是常斷電?另外,你是否將任何轉換應用到彈出窗口顯示的視圖? – Sam 2011-03-11 21:17:22

回答

3

如果你的代碼是基於你提到的問題,它會出現在你使用的是下面的代碼顯示酥料餅:

[popoverController presentPopoverFromBarButtonItem:sender 
          permittedArrowDirections:UIPopoverArrowDirectionUp 
              animated:YES] 

UIPopoverController:presentPopoverFromBarButtonItem:permittedArrowDirections:動畫接受的UIBarButtonItem *發件人你的UITabBar沒有。 UITabBar使用具有UIBarItem基礎的UITabBarItem。 UIBarButtonItem也有該基礎(UIBarItem)。

好歹......我還需要表明從tabbaritem一個uipopovercontroller,我用下面的代碼:

MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]; 
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:myVC]; 
[myVC release]; 
popover.popoverContentSize = myVC.view.frame.size; 
popover.delegate = self; 
int tabBarItemWidth = self.tabBar.frame.size.width/[self.tabBar.items count]; 
int x = tabBarItemWidth * 6; 
CGRect rect = CGRectMake(x, 0, tabBarItemWidth, self.tabBar.frame.size.height); 
[popover presentPopoverFromRect:rect 
         inView:self.tabBar 
     permittedArrowDirections:UIPopoverArrowDirectionUp 
         animated:YES]; 

注意:你的X計算將是不同的。爲我選擇的標籤欄項目是第6個。 基本上

x = tabBarItemWidth * currentTabBarItemIndex; 
+0

忘了提到這個鏈接[我怎麼能有一個popover來自一個標籤,而不是一個視圖](http://stackoverflow.com/questions/4405350/how-可以-I-具有-A-酥料餅-來從一個標籤-代替對的一視圖)。它與我給你的答案/代碼相似,但我更喜歡我的解決方案,因爲我的彈出窗口直接出現在選定的tabbaritem下。 – Sam 2011-03-11 22:51:49

+0

這是否解決了您的問題?我很確定調用UIPopoverController presentPopoverFromBarButtonItem不支持UITabBarItems。當你編譯時,它會產生一個警告嗎? – Sam 2011-03-14 22:02:01

+0

我沒有收到任何警告,因爲我實際上發送了一個ID,我連接到了IB中的選項卡按鈕 – 2011-03-17 17:40:02