2014-10-09 55 views
0

我發現導致dismissViewController:animated:completion不會關閉已呈現的視圖控制器的情況。雖然它在運行iOS 8的iPad上消失,但它並不會在運行iOS 7.1的iPad上消失。我試過selfself.presentingViewControllerself.presentedViewController - 全都無能爲力。我用Xcode 6.0和6.1 beta來試用它。雖然我確實認爲這是一個錯誤,但是可以採取什麼措施來解決該問題,並強制取消該視圖控制器,確保它適用於運行iOS 7和8(呈現爲彈出窗口)的iPad以及運行iOS 7和8的iPhone(呈現全屏)?dismissViewController不關閉使用通用故事板時出現的視圖控制器

我已經創建了一個非常簡單的項目,您可以使用它來嘗試此操作:Xcode project zip

項目設置:

  • 通用故事板指定給iOS 7+
  • 實施酥料餅的介紹Segue公司
  • 實現駁回該酥料餅內酥料餅的能力

遭遇意外的行爲:

  1. 打開提供Xcode項目
  2. 運行iPad上的iOS 7模擬器應用
  3. 輕按頂部電池呈現酥料餅
  4. 輕按細胞在酥料餅以關閉它

回答

0

問題在於你嘗試處理popover的方式。要關閉彈窗,您應該使用dismissPopoverAnimated方法而不是dismissViewControllerAnimated

我認爲你將不得不做更多的工作來完成你的iOS任務版本。根視圖控制器應該有一些屬性來將創建的彈出窗口與PoppedUpTVC一起存儲爲彈出式窗口內容,並且PoppedUpTVC必須要求根視圖控制器對存儲的彈出窗口執行關閉它的方法dismissPopoverAnimated

要到酥料餅參考,試試這個在prepareForSegue

if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) { 
    UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue; 
    yourDestViewController.propertyToStorePopover = popoverSegue.popoverController; 
} 
+0

是怎麼開始到'UIPopoverController'的參考,當你使用酥料餅演示Segue公司? 'presentationController'屬性僅在iOS 8中可用,沒有'popoverController'屬性。 – Joey 2014-10-09 22:21:53

+1

通過代碼 – voromax 2014-10-09 22:31:34

+0

'prepareForSegue'或執行'init(contentViewController viewController:UIViewController)'和'func presentPopoverFromRect(_ rect:CGRect,inView view:UIView,permittedArrowDirections arrowDirections:UIPopoverArrowDirection,animated animated:Bool)是一個捕捉它的好地方 – Joey 2014-10-15 22:21:33

相關問題