2012-03-14 47 views
4

從5.0更新到iOS 5.1後,從分離視圖控制器彈出窗口中的按鈕呈現的操作表正在崩潰應用程序。它輸出的錯誤是:*斷言失敗 - [UIActionSheet presentSheetInPopoverView:],/SourceCache/UIKit/UIKit-1914.84/UIActionSheet.m:1816 因此,在Splitview控制器的Master View中,我有一個攝像頭按鈕我試圖提出一個要求從相機膠捲或相機中挑選的操作表。有任何想法嗎?Splitview中的UIActionsheet與iOS 5.1更新崩潰

if(lpm != null) //Long Press Menu/Action Sheet 
    lpm = null; 
lpm = new UIActionSheet("Select an action to perform on " + Application.MO.CurrentList[indexPath.Row].Name); 
foreach(var button in buttonList) 
    lpm.AddButton(button); 
lpm.CancelButtonIndex = buttonList.Count - 1; 
lpm.Style = UIActionSheetStyle.BlackTranslucent;     
lpm.ShowFrom(theList.RectForRowAtIndexPath(indexPath), this.View, true); 
lpm.Clicked += delegate(object sender, UIButtonEventArgs e2) { 
        lpm.DismissWithClickedButtonIndex(e2.ButtonIndex, false); 
          Application.MO.RespondToLongPressSelection(e2.ButtonIndex); 
         }; 
+0

立即崩潰應用程序,還是選擇了其中一個選項(相機/圖庫)時? – 2012-03-14 23:51:53

+0

它立即在「ShowFrom」上崩潰應用程序它隻影響剛剛安裝應用程序的全新副本的iOS 5.1用戶,如果他們在更新到5.1之前安裝了它,它不會影響它們,並且每次都能正常工作。所有以前的iOS版本似乎都不受影響。 – TChadwick 2012-03-15 14:23:02

+0

還確定它只發生在實際的iPad上,如果你在模擬器中嘗試它,它可以正常工作。我相信這是由於5.1模擬器在您觸摸導航按鈕時不模擬Masterview的新「滑入」轉換。 – TChadwick 2012-03-15 15:01:22

回答

1

這是一個潛在的替代解決方法,它有我創造了一個完全獨立的酥料餅和插入我的UIActionSheet成,這方便增加了一個非常酷的滑入效果:

var buttonList = Application.MO.LoadLongPressOptions(false); 
if(lpm != null) 
lpm = null; 
if(longpresspopover != null) 
{ 
    longpresspopover.Dismiss(false); 
    longpresspopover = null; 
} 
longpresspopovercontroller = new UIViewController(); 
        longpresspopovercontroller.View.BackgroundColor = UIColor.Black; 
longpresspopover = new UIPopoverController(longpresspopovercontroller); 
        longpresspopover.PresentFromRect(theList.Frame, this.View,UIPopoverArrowDirection.Any, true); 
        lpm = new UIActionSheet("Select an action to perform:"); 
        foreach(var button in buttonList) 
         lpm.AddButton(button); 
        lpm.CancelButtonIndex = buttonList.Count - 1; 
        lpm.Style = UIActionSheetStyle.BlackTranslucent; 
        lpm.ShowInView(longpresspopovercontroller.View); 
        longpresspopover.SetPopoverContentSize(lpm.Frame.Size, false); 
        lpm.Clicked += delegate(object sender, UIButtonEventArgs e2) { 
          lpm.DismissWithClickedButtonIndex(e2.ButtonIndex, false); 
          longpresspopover.Dismiss(true); 
          Application.MO.RespondToLongPressSelection(e2.ButtonIndex); 
         }; 
3

我跑進入相同的問題,並通過在主窗口中顯示來修復它。試圖從任何其他視圖或靠近觸摸按鈕的矩形顯示它會導致相同的崩潰。以下是在屏幕的中間僅在縱向模式顯示代碼:

if (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) 
     [sortSheet showInView:self.view.window]; 
    else 
     [sortSheet showFromBarButtonItem:sender animated:YES]; // rightBarButton 

已經有幾個radar bugs報道。但請提交一份新文件,以便他們知道每個人都會遇到這種情況。

如果您不在視圖控制器中,請使用:[UIApplication sharedApplication] .keyWindow獲取顯示視圖的主窗口。

+0

謝謝,我們提交了一個雷達錯誤。 – TChadwick 2012-04-06 16:36:29

+0

謝謝。所有提交給5.1的錯誤都被確認爲有多個重複項,所以我們當然應該期待5.1.1的修復,屆時將全部使用if-else修復。 – Conor 2012-04-07 08:36:55