2016-07-05 4 views
0

В пределах SearchTokenViews.xib У меня есть три UIViews. Я знаю, что я могу получить доступ к этому перо, как это:Как получить доступ к UIView от nib через restoreIdentifier?

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:

Это свойство указывает, должен ли быть сохранена информация о состоянии в представлении; он также используется для идентификации вида во время процесса восстановления . Значение этого свойства по умолчанию равно нулю, , что указывает на то, что состояние вида не нужно сохранять. Присвоения строки объекта в собственность позволит контроллеру владеющего вида знает, что точка зрения имеет соответствующую информацию о состоянии спасти

Просто устанавливающее значение этого свойства не достаточно, чтобы гарантировать, что вид сохраняется и восстанавливается.

В заключение практически невозможно «создать экземпляр» нового вида, используя только это свойство.

Смежные вопросы