4

我遇到了分割視圖控制器的一個奇怪問題,我已經能夠在一個全新的應用程序中很容易地重新創建問題。如果將iPhone 6 Plus旋轉到橫向狀態,則主屏幕和詳細視圖控制器在屏幕上變爲可見,但如果您然後旋轉回縱向並切換選項卡,然後旋轉至橫屏,則詳細視圖控制器將完全變灰,就像沒有任何內容。這是記錄到控制檯:<Error>: CGImageCreate: invalid image size: 0x0我想知道,如果你知道原因或可以做些什麼來解決這個錯誤。旋轉iPhone 6 Plus產生灰色細節視圖控制器?

的設置UITabBarController與三個選項卡,每個選項卡是默認UISplitViewController通過界面生成器拖出來。子類UISplitViewController並將3個拆分視圖更改爲該類。在viewDidLoad中將分割視圖控制器的代表設置爲self。然後從splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:返回YES。這將它設置爲使得在旋轉回肖像而不是默認細節視圖控制器之後,主人仍然可見。

重現錯誤:在iPhone上的6加肖像啓動應用,旋轉爲橫向,旋轉回到肖像,點擊第二或第三個選項卡,旋轉至橫向
缺陷:詳細視圖控制器完全灰化
預計:詳細視圖控制器應該出現像它一般不會,如果你啓動應用程序,點擊不同的標籤,然後旋轉爲橫向

附加信息:一旦發生這種情況,如果[R otate回到肖像,然後回到不同的標籤,它也將顯示一個灰色的細節控制器旋轉到風景。該應用程序必須強制退出並重新啓動才能看到橫向分割的視圖。

現在我注意到,如果您打開應用程序並顯示第一個選項卡,如果將iPhone 6 Plus旋轉到橫向,它實際上會初始化標籤欄控制器中的每個主控和詳細視圖控制器(5個附加視圖控制器) - 如果您繼承了這些控制器,則它停止在viewDidLoad中設置的斷點處。我預計它只會初始化顯示在屏幕上的分割視圖控制器的詳細視圖控制器。我想知道這是否是預期的行爲?我相信它可能與這個bug有關。

我的問題是,這灰色的屏幕是iOS中的一個錯誤,還是有這個設置的問題,或者有什麼可以做的,以防止這種情況發生?

應該如何顯示:
Screenshot of expected appearance

按照上面的步驟時,它是如何出現:
Screenshot of gray detail view controller bug

回答

1

我遇到了一些奇怪的事情我自己,我的Multiple Detail Views樣品工作時。實際上,我在6+模擬器中顯示2個表視圖而不是1個表視圖和1個細節視圖。我可以通過返回我的詳細視圖控制器separateSecondaryViewControllerFromPrimaryViewController方法SplitViewController delegate來修復它。

我的代碼是這樣的:

func splitViewController(splitViewController: UISplitViewController, separateSecondaryViewControllerFromPrimaryViewController primaryViewController: UIViewController!) -> UIViewController? { 
    if let primaryAsNavController = primaryViewController as? UINavigationController { 
     if let topAsTableViewController = primaryAsNavController.topViewController as? TableViewController2 { 
      //Return Navigation controller containing DetailView1 to be used as secondary view for Split View 
      return (UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("detail1Nav") as UIViewController) 
     } 
    } 
return nil 
} 

對我來說發生了什麼,只有當TableView2是TopViewController,所以我檢查它,如果真我初始化我打算DetailViewController並將其返回。

希望這種方法也適用於您。

+0

這確實可以解決問題!這似乎是iOS中的錯誤,不是嗎?我已經提交了一個錯誤報告,你呢? – Joey 2014-10-29 22:03:44

+0

灰色屏幕表示未初始化的VC,所以我們需要初始化它,並提到方法似乎是正確的地方做到這一點。然而,我所遇到的情況有點不同,請查看我的博客文章中鏈接的代碼。我實際上同時顯示了兩個表視圖。其中一名在小學,另一名在中學。不知道這是否是一個錯誤。讓我知道你是否從蘋果回來。如果你能分享它,並看看是否有其他方法會更好,我會很高興看到你的代碼。 – 2014-10-31 12:25:57

相關問題