如何通过restorationIdentifier从nib访问UIView?

时间:2016-07-05 18:42:29

标签: ios swift uiview

Variable "form" does not exist in ::landing.html.twig at line 50 500 Internal Server Error - Twig_Error_Runtime 内,我有三个SearchTokenViews.xib。我知道我可以像这样访问那个笔尖:

UIViews

然后:

let searchTokenViewsNIB = NSBundle.mainBundle().loadNibNamed("SearchTokenViews", owner: self, options: nil)

但是什么决定了那三个的顺序?通过类似于视图控制器的let firstSearchToken = searchTokenViewsNIB.first as! SearchTokenView let secondSearchToken = searchTokenViewsNIB[1] as! SearchTokenView let thirdSearchToken = searchTokenViewsNIB.last as! SearchTokenView 来访问它会不会更好?

restorationIdentifier

如何使用UIView和.xib文件执行相同操作?

2 个答案:

答案 0 :(得分:1)

到目前为止我找到的唯一解决方案是:

extension NSBundle {

    func loadNibNamed(named: String, owner: AnyObject!, identifier: String) -> UIView? {
        return loadNibNamed(named, owner: owner, options: nil).filter({ $0.restorationIdentifier == identifier }).first as? UIView
    }
}

答案 1 :(得分:1)

遵循苹果指南here

  

此属性指示视图中的状态信息是否应该   保存;它也用于识别期间的视图   恢复过程。默认情况下,此属性的值为nil,   表示不需要保存视图的状态。   将字符串对象分配给属性可以拥有视图   控制器知道视图有相关的状态信息来保存

     

仅设置此属性的值不足以确保这一点   视图被保留和恢复。

总之,通过仅使用此属性来“实例化”新视图几乎是不可能的。