Вложенные просмотры не отображаются в подклассовом UIView

#iphone #ios #cocoa-touch #uiview

#iPhone #iOS #cocoa-touch #uiview

Вопрос:

У меня есть подкласс UIView, который не будет рисовать свои вложенные просмотры. Или, по крайней мере, он не показывает свои вложенные просмотры. Весь вид загружается из кончика.

Кроме того, как ни странно, он не будет рисовать фон, который я установил в IB. (Я использую Xcode 4.2).

Но он будет отображать родительский вид, который я указываю, awakeFromNib например, фон, границу и угол.

Для opaque свойства установлено значение NO . Любые предложения приветствуются!

Комментарии:

1. Я бы предпочел поместить несколько NSLog() утверждений вокруг методов initFromNib, просто чтобы посмотреть, срабатывают ли они…

Ответ №1:

Когда вы загружаете представление из кончика, например, с помощью

 [[NSBundle mainBundle] loadNibNamed:  owner:self]
 

затем вам все равно нужно добавить этот загруженный вид в качестве подвида к одному из видов, которые в данный момент видны в вашем окне, чтобы этот вид стал видимым. Наличие доступа к нему от вашего владельца гарантирует, что представление загружено и у вас есть ссылка на него, но это само по себе не приводит к добавлению его в качестве вложенного представления владельцу.

Итак (предполагая, что self является родительским представлением и владельцем в конусе), сначала убедитесь, что у вас определенно есть выход, установленный в конусе от владельца к загружаемому представлению, а затем, что вы выполняете

 [self addSubview:loadedView]
 

(Где загруженный вид — это вид в конусе, владельцем которого является self).

Ответ №2:

Я думаю, вы можете получить этот результат, если переопределите drawRect. Попробуйте прокомментировать это и посмотреть, что произойдет. Если вы хотите одновременно рисовать свой собственный контент и включать вложенные просмотры, вы можете сделать это, вызвав [super drawRect] в начале вашего drawRect .