2013-05-28 2 views
0

Я пытаюсь использовать UIScrollView с UIViews (для управления ими как файлы xib), на данный момент у меня есть массив, в котором хранятся представления.UIScrollView с UIViews не показан

testingView является UIViewcontroller с его собственным файлом XIb и testingView2 также UIViewcontroller со своим другим файлом XIb

- (void) viewDidLoad { 

[super viewDidLoad]; 

_testingView = [[TestingViewController alloc] init]; 
_testingView2 = [[TestingViewController2 alloc] init]; 

self.array = [[NSArray alloc] initWithObjects: _testingView.view, _testingView2.view, nil]; 

for (int i = 0; i < [array count]; i++) { 
CGRect frame; 
frame.origin.x = self.scrollingView.frame.size.width*i; 
frame.origin.y = 0; 
frame.size = self.scrollingView.frame.size; 

[self.scrollingView addSubView: [self.array objectAtIndex:i]]; 

} 

self.scrollingView.contentSize = CGSizeMake (_scrollingView.frame.size.width*[array count], _scrollingView.frame.size.height); 

} 

проблема заключается в том, что он принимает только первый вид (даже если поменять их местами) и вторая точка зрения не показана, то же самое с UIImages вместо представлений работает, может кто-нибудь объяснить мне, почему? похоже, что он не видит второй вид в массиве порядка ...

ответ

0

Почему вы вычисляете переменную «frame» внутри цикла for, когда вы ее не используете?

На мой взгляд, вы должны внести следующие изменения в свой код.

for (int i = 0; i < [array count]; i++) { 
    CGRect frame; 
    frame.origin.x = self.scrollingView.frame.size.width*i; 
    frame.origin.y = 0; 
    frame.size = self.scrollingView.frame.size; 

    **UIView *v=[self.array objectAtIndex:i];** 

    **v.frame=frame;** 


    **[self.scrollingView addSubView:v];** 

}

Надеется, что это работает.

+0

Да, вы правы, это был остаток от того, что я пытался сделать, даже если verbumdei прав по этому поводу, и мне пришлось внести некоторые изменения, чтобы заставить его работать, ваш подход, безусловно, более корректен в отношении исправления моего проблема, так что спасибо – Adarkuccio

+0

приветствую :) –

0

В цикле for вы вычисляете фрейм для вновь добавленного subview, но вы не устанавливаете этот фрейм в этот под просмотр.

В вашем цикле, добавить подвид, как это, например:

UIView *subview = (UIView *)[array objectAtIndex:i]; 
subview.frame = frame; 
[self.scrollingView addSubView:subview]; 
0

Вы должны установить рамки для каждого из подвидов в представлении прокрутки. Например, вы можете установить фрейм _testingView2.view как смещение x из ширины кадра _testingView1.view.

_testingView2.view.frame = CGRectOffset(_testingView2.frame, CGRectGetWidth(_testingView1.frame), 0) 

Существует множество способов расчета рамки. Попробуйте использовать методы CGRectWidth, CGRectGetMaxX и т. Д.