Можно ли загрузить Xib из другого Xib без добавления пустого представления в иерархию? - PullRequest
0 голосов
/ 20 июня 2020

Я знаю, что есть способы загрузить представление из пера и загрузить одно из его под-представлений из другого пера. Например, вы можете заставить xib загружать настраиваемый подкласс UIView в качестве одного из его подвидов, установив этот класс в инспекторе идентичности, а затем заставить этот подкласс UIView добавить подвид из Xib в коде. По сути, настраиваемый подкласс UIView - это просто прокси-представление, и иерархия представлений этого подхода следующая:

Родительский вид (загружается из Xib) -> прокси-подкласс UIView -> Дочернее представление (загружено из Xib)

Этот метод описан в сообщении Medium здесь

Однако в идеале я бы хотел полностью избежать просмотра прокси, поскольку он имеет неблагоприятное влияние на производительность изменить: , чтобы уточнить, у меня нет проблем с производительностью, когда я говорю «плохая производительность», я просто имею в виду, что не идеально добавлять больше представлений в иерархию, поскольку это использует больше системных ресурсов, но разница наверное незаметна и я задаю этот вопрос в основном из любопытства . Я мог бы добиться этого, добавив представление через код, но я бы предпочел использовать Xib, так как это легче визуализировать ограничения. Я также мог бы добиться этого, используя только один Xib, но я хотел бы иметь возможность использовать дочерний xib в другом месте приложения.

В моем идеальном мире дочернее представление является прямым дочерним элементом родительского view, причем оба загружаются из Xibs:

Main View (загружается из Xib) -> Child View (загружается из Xib)

Идеальный способ, которым я бы хотел чтобы иметь возможность реализовать прямую связь, достаточно просто установить класс дочернего xib (с помощью инспектора идентичности) внутри родительского xib. Однако, насколько я могу судить, причина, по которой это не работает, заключается в том, что когда родительское представление создается из родительского xib, оно даже не знает, что для дочернего представления существует Xib, поэтому просто загружает его программно, и я не верю, что есть какая-либо возможность сообщить ему, чтобы загрузить подвид из xib?

Другое гипотетическое решение - заставить дочернее представление загружаться из xib независимо от того, откуда оно было загружено, как я считаю это устранило бы необходимость в подклассе UIView прокси и таким образом решило бы мою проблему, но я не знаю, как это сделать, и это может оказаться невозможным.

Пожалуйста, дайте мне знать любые идеи! большое спасибо

...