2016-11-30 71 views
3

我正在重現以下情況,希望找出問題的理論原因是什麼。問題如下:UIViewController無法正確載入它的xib

當我聲明一個新的Swift視圖控制器和筆尖對,有時視圖控制器的插口根本不加載(筆尖根本不加載)。這隻發生在特定設備上(在我的情況下,在iPad mini 1,非視網膜,iOS 8.4.1上)。在我處置的所有其他設備上,所有的設備都按預期工作

我找到的解決方案是重寫在init用筆尖方法:

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 
    super.init(nibName: Constants.viewControllerNibName, bundle: nil) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

當我進入筆尖名手動一切工作在所有設備上如預期

有人可以賜教一下,爲什麼這是需要和什麼問題的原因。

The most in有趣的是,問題只發生在非常小的設備子集上(在我的情況下,上面提到)。

更新:似乎這個問題只發生在iOS 8上,而不是iOS 9+上,發現在測試時和從Zonily Jame下面鏈接的票上發現。

+1

是viewControllerNibName靜電去除呢? –

+0

我在閱讀之前完全回答了這個問題。我沒有直接試圖去做你正在談論的內容,但是如果你能提出更具體的問題,我應該有寶貴的意見。 – Sethmr

+0

大聲笑我們有同樣的問題[尼布問題](http://stackoverflow.com/questions/40860839/presenting-a-nib-modally-crashes-on-ios-8-but-not-on-ios-9)但不是特定的設備,我只是不會在特定的操作系統上啓動 –

回答

1

這是我使用碼的手動設置一個的viewController

class ViewController: UIViewController { 
    init() { 
     super.init(style: .plain) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
} 

然後,我只是設置邊框,並將其添加作爲一個子視圖。

let vc = ViewController()! 
vc.view.frame = CGRect(x: xValue, y: yValue, width: desiredWidth, height: desiredHeight) 
view.addSubview(vc.view) 
addChildViewController(vc) 
vc.didMove(toParentViewController: self) 

,並說

vc.view.removeFromSuperview() 
vc.removeFromParentViewController() 
vc = nil