2015-12-02 142 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