Красиво изложенная статья.
Поскольку вы просили лучший способ, чтобы избежать попадания экземпляра вашего пользовательского класса в другой экземпляр самого себя, вот он:
Вы можете просто создать свой класс CustomView
, иметь его главный экземпляр в xib со всеми подпредставлениями и выходами. Затем вы можете применить этот класс к любым экземплярам в ваших раскадровках или других xibs.
Не нужно возиться с владельцем файла, или подключать выходы к прокси-серверу, или изменять xib особым образом, или добавлять экземпляр вашего пользовательского представления в качестве подпредставления самого себя.
Просто сделайте это:
1. Импорт фреймворка BFWControls
2. Измените свой суперкласс с UIView
на NibView
(или с UITableViewCell
на NibTableViewCell
)
Вот и все!
Он даже работает с IBDesignable для визуализации вашего пользовательского представления (включая подпредставления из xib) во время разработки в раскадровке.
Вы можете прочитать больше об этом здесь:
https://medium.com/build-an-app-like-lego/embed-a-xib-in-a-storyboard-953edf274155
И вы можете получить фреймворк BFWControls с открытым исходным кодом здесь:
https://github.com/BareFeetWare/BFWControls
А вот простой фрагмент кода NibReplaceable
, который управляет им, если вам интересно:
https://gist.github.com/barefeettom/f48f6569100415e0ef1fd530ca39f5b4
Том 👣