Я создал пользовательский вид (ImageAndToolBarContainerView) с соответствующим XIB-файлом, который я бы хотел загрузить в несколько UIViewControllers в моем приложении.Загрузка пользовательского UIView из ниба вызывает бесконечный цикл или генерирует исключение nil
Я искал правильный учебник о том, как это сделать, но почти каждый, с которым я сталкивался, слишком стар или вызывает серьезные исключения.
При попытке загрузить его через раскадровку/NIB, (я создаю представление в UIViewController на раскадровке и я установить атрибут «класс» в ImageAndToolBarContainerView. Я поставил точек, в том числе вида, но ни один из них не кажется, для загрузки, когда называется классом, и я получаю ошибку:
фатальная ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение
при попытке доступа к представлению:
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
//setup()
self.view.frame = self.bounds
self.addSubview(view)
}
Затем я попробую использовать следующий код для загрузки NIB (раскомментируя вышеприведенную функцию setup(). Код настройки таков:
func setup()
{
self.loadViewFromNIB()
self.view.frame = self.bounds
self.addSubview(view)
}
func loadViewFromNIB() -> UIView
{
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "ImageAndToolBarContainer", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}
Это, конечно, ведет к бесконечному циклу.
Я также следующая функция заявляет:
override func awakeFromNib()
{
super.awakeFromNib()
self.view.frame = self.bounds
self.addSubview(view)
}
Что я здесь отсутствует? Где я неправ? Есть ли окончательный учебник в том, как это сделать правильно?
чисто FWIW. действительно, вы должны просто использовать ** контейнерный вид ** в эти дни. это своего рода «слон в комнате» с программированием iOS. ** все ** должно быть просто контейнером. это невероятно просто. Apple сделала это точно, чтобы устранить все проблемы, о которых вы говорите. long tutorial http://stackoverflow.com/a/23403979/294884 – Fattie
Кто является файловым владельцем .nib вашего пользовательского вида? И как вы создаете свои контроллеры просмотра? Выходят они из раскадровки или другого .nib? –
Похоже, вы устанавливаете 'ImageAndToolBarContainerView' в поле' Class' 'View', а не устанавливаете его в' File's Owner'. – eMdOS