2016-10-07 2 views
-2

Как мне получить все виды в файле Nib? Я пытаюсь получить все представления в пределах Nib с:Не удалось передать значение типа 'UIView' в 'NSArray'

let objects = Bundle.main.loadNibNamed("ViewName", owner: self, options: nil)?[0] as! NSArray 
    let mainView : UIView = objects[0] as! UIView 

Хотя я получаю эту ошибку:

Could not cast value of type 'UIView' (0x108080b40) to 'NSArray' (0x105173c58).

Заранее спасибо за вашу помощь.

+0

Я не понимаю, почему это проголосовало? Оставьте комментарий, чтобы я мог его улучшить. –

ответ

1

loadNibNamed возвращает массив типа [Any]?, а ваш индекс - [0], означает, что вы обращаетесь к первому объекту массива. Поэтому просто удалите [0].

let objects = Bundle.main.loadNibNamed("ViewName", owner: self, options: nil) 

Второй вариант можно непосредственно инициализировать UIView объект.

if let mainView : UIView = Bundle.main.loadNibNamed("ViewName", owner: self, options: nil)?[0] as? UIView {...} 

Выберите, решение которой разрешит вашу ошибку.

+0

Привет, я пробовал и Nirav D, и все ярлыки в представлении не отображаются с их данными. Также я получаю предупреждение по первому варианту: Cast from '[Any]?' для несвязанного типа «NSArray» всегда терпит неудачу. - вам нужны оба! во втором варианте. Я попытался изменить его, поскольку это вызвало ошибку в Xcode. –

+0

Вы не можете получить доступ к метке, потому что выбрали ее в 'UIView', вместо того, чтобы ее использовать с помощью' customView', также я отредактировал первый вариант, нет необходимости бросать '[Any]?' На nsarray. –

+0

@GerardGrundy Он работает сейчас? –

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