2016-07-05 34 views
0

SearchTokenViews.xib以内我有三个UIViews。我知道我可以访问笔尖像这样:如何通过restoreIdentifier从笔尖访问UIView?

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访问它会不会更好?

let controller = UIStoryboard(name: "Settings", bundle: nil).instantiateViewControllerWithIdentifier("") 

我该怎么做UIView和.xib文件?

回答

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 
    } 
} 
+0

我非常肯定,加载它们全部和搜索是唯一的方式,如果视图都在同一个笔尖。 –

1

继苹果直营店here

此属性指示是否在视图状态信息应 予以保留;它还用于在恢复过程中识别视图。该属性的值默认为零, 表示视图的状态不需要保存。 分配一个字符串对象的属性可以让所属视图 控制器知道该视图有国家相关的信息保存

简单地设置该属性的值是不够的,以确保 视图是保存和恢复。

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