2015-12-02 127 views
1

這裏是我的viewController添加(查看處於的.xib文件)addSubview - iOS設備8 VS iOS版9

class EmptyFeedViewController: UIViewController { 
    @IBOutlet weak var view_center: UIView! 
    @IBOutlet weak var img_icon: UIImageView! 
    @IBOutlet weak var lbl_description: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.backgroundColor = UIColor.grayPale() 
     lbl_description.textColor = UIColor.grayMeduim() 
     lbl_description.text = "feed_empty".localizeFromFeedTable() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 

我添加像這樣從其他的viewController

let placeholderVC = EmptyFeedViewController() 
addChildViewController(placeholderVC) 
view_placeholder = placeholderVC.view 

在iOS 9它工作正常,但在iOS 8「lbl_description」是零 我應該如何加載我的觀點兩個操作系統?

+5

這些屬性名傷害我的眼睛創建視圖控制器的新實例。 – dasdom

+0

只是一個可能的解決方案:嘗試將Xib文件作爲UIView本身,而不是UIViewController。調用它時使用addSubview方法 –

+0

dasdom謝謝,非常有幫助: Rob我在這裏使用一個.xib,而不是一個故事板,但是,這是可行的 @kaizoku我該怎麼做?根據視圖生命週期和延遲加載,我仍然需要引用UIViewController – Kireyin

回答

2

由於您使用Xibs,爲了得到填充IBOutlets,你應該使用指定的初始化- initWithNibName:bundle:

let placeholderVC = EmptyFeedViewController(nibName: "EmptyFeedViewController", 
              bundle: nil) 
+0

作品 - 當然是 但是,在代碼中存在很長的路線,並且我希望能夠在我們停止支持iOS 8時立即將其刪除(我知道,我們仍然有時間),所以我 'init (){ super.init(nibName: 「EmptyFeedViewController」,捆綁:無) }' 我EmptyFeedViewController 那是一個好的解決方案嗎? – Kireyin

+0

@Kireyin當然!重要的一點是,在使用Xib時,可以調用'initWithNibName:bundle:'初始化程序。隱藏你的VC內部不應該改變結果:) – veducm

+0

嗯當然是。我的意思是:對於不被它感到驚訝的人來說,這是一種常見的方式嗎?我們的物業命名約定顯然已經足夠令人驚訝:D – Kireyin