2013-10-13 4 views
4

Когда на экране появляется UIView, какой метод он вызывает? Например, если у меня есть UIScrollView, и я заполняю его сотней представлений, один под другим, , какой метод вызывается UIViews, когда они прокручиваются так, что они появляются на экране?iOS - Когда на экране появляется UIView, какой метод он вызывает?

не существует - (void) сделалMoveToWindow? что-то другое ?

+1

Отсутствует. Чего вы пытаетесь достичь? – Wain

+1

Я хочу создать пользовательский подкласс uiview с делегатом, который вызывает функцию делегата, когда он появляется на экране пользователю. – Zigglzworth

+0

В представлении нет этих знаний. Представления прокрутки могут сообщать вам, в какой области их содержимого они в настоящее время видны, но не автоматически, какие подпункты находятся в этой области. Взгляды ничего не знают. – Wain

ответ

1

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

+0

will/didMoveToSuperView вызывается при добавлении субвью, а не в прокрутке. – Wain

+0

Что сказал Уэйн – Zigglzworth

+0

@Wain true, я сосредоточился на вопросе «когда он появляется на экране». Но, как я уже сказал, пойдите со столом ... –

0

Нет, но если вы реализуете делегат UIScrollView, UIScrollView вызывает метод, который дает вам положение прокрутки и многое другое (многие методы, скорее всего, scrollViewDidScroll).

https://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html

Чтобы узнать, какой вид, вы должны рассчитать, какое представление видно, видя, если CGRectIntersectsRect (scrollView.bounds, subview.frame) возвращает истину.

+0

Да, но это не так, t скажите мне, какой вид пришел в видимость, что я ищу. Теперь я знаю, что я мог бы хранить их в массиве и находить наш, который по итерации через их позиции, но это слишком много обработки и не достаточно гладко для того, что мне нужно. – Zigglzworth

+0

Вам нужно рассчитать, какой вид виден. Я изменил ответ –

1

В частности, для просмотра прокрутки делегат (как правило, контроллер) может получить уведомление о прокрутке прокрутки. Когда вы получаете этот обратный вызов, вы можете написать немного кода, который выполняет итерации через подсмотры и проверки, которые находятся в видимом кадре вида прокрутки (с использованием CGRectIntersectsRect, contentOffset и bounds).

+0

Слишком много обработки. Не достаточно гладко. – Zigglzworth

+0

Это означает, что у вас слишком много загрузочных объектов одновременно загружено ... – Wain

+0

Scrollviews может быть очень длинным и иметь много подзапросов, загруженных на них. Я знаю, что я мог бы использовать табличное представление, чтобы избежать такой перегрузки, но я ищу чтобы увидеть, возможен ли способ прокрутки. – Zigglzworth

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