Как получить доступ к подпредставлениям во вложенных UIScrollViews - PullRequest
3 голосов
/ 12 декабря 2010

У меня были проблемы с получением UIScrollView с несколькими подпредставлениями UIImageView для правильного масштабирования, поэтому я попытался использовать UIScrollView с несколькими подпредставлениями UIScrollView внутри него и UIImageView внутри каждого из них. Таким образом, один UIScrollView может только прокручивать, а другой может только масштабировать.

Мой вопрос: как я могу получить доступ к подпредставлениям подпредставления. Я знаю, что обычно я могу получить доступ к подпредставлениям, например, используя [scrollView viewWithTag:tagInt];, но я не могу получить доступ к подпредставлениям подпредставления, используя [[scrollView viewWithTag:tagInt] viewWithTag:tagInt2];, поскольку viewWithTag возвращает только один UIView, а не все его подпредставления.

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

Каков наилучший способ получить доступ к подпредставлению и затем перейти к подпредставлению подпредставления (т. Е. Получить доступ к моему UIScrollView, используемому для масштабирования, которое является подпредставлением моего основного вида, а затем получить доступ к его подпункту UIImageView)?

Ответы [ 3 ]

3 голосов
/ 31 января 2011

Если вы пока не чувствуете, что подклассы удобны, вам нужно назначить теги для UIScrollViews, содержащих изображения.Затем вам нужно будет сделать то, что предложил BobC, немного потрудившись.

for (UIView *subview in [myScrollView subviews])
{
   //check if the current subview is one of the UIScrollViews
   if (subview.tag > 100)
        //do something with the UIScrollView
}
0 голосов
/ 12 декабря 2010

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

for(UIView *subview in [myScrollView subviews]) {
     // do anything with your subview here. 
}
0 голосов
/ 12 декабря 2010

Самый элегантный способ сделать это - создать подкласс UIScrollView, присвоив ему свойство UIImageView.Таким образом, вы можете получить к этому UIImageView что-то вроде:

MyScrollView *myScrollView = (MyScrollView *)[scrollView viewWithTag:tagInt];
UIImageView *imageView = myScrollView.imageView;

Надеюсь, это поможет!

...