我创建了一个滚动视图,在滚动视图中,我添加了两个备用自定义UIView s
@interface FirstView : UIView
@interface SecondView : UIView
我的数组是
NSMutableArray *classArray= [[NSMutableArray alloc] initWithObjects:firstView, secondView, firstView, secondView, nil];
我正在以下列方式添加滚动视图的视图
for ( i = 0 ; i< 5; i++)
{
UIView *userView = [classArray objectAtIndex:i];
CGRect rect;
rect.size.height = KVIEWHGT;
float userViewWidth = userView.frame.size.width;
rect.size.width = userViewWidth;
userView.frame = rect;
[scrollView addSubview:userView];
[userView release];
}
UIView *userView = nil;
NSArray *userSubViews = [scrollView subviews];
CGFloat x = 0;
float userViewWidth = 0.0f;
for (userView in userSubViews) {
if ([userView isKindOfClass:[UIView class]]){
CGRect frame = userView.frame;
frame.origin = CGPointMake(x, 0);
userView.frame = frame;
userViewWidth = userView.frame.size.width;
x += userViewWidth + 10;
}
}
[scrollView setContentSize:CGSizeMake(x, scrollView.frame.size.height)];
我在滚动视图上只获得两个自定义视图的输出,但我希望滚动视图上应该有5个自定义视图
请帮我解决这个问题。
答案 0 :(得分:1)
你在数组中多次添加firstView,secondView,即使你多次添加它引用同一个实例
NSMutableArray *classArray= [[NSMutableArray alloc] initWithObjects:firstView, secondView, firstView, secondView, nil];
答案 1 :(得分:0)
UIView只能有一个父视图。您多次使用相同的UIView实例。如果您将UIView添加到另一个,它将从当前连接的那个中删除。
阅读UIView类参考,addSubview:
视图只能有一个超级视图。如果视图已经具有超视图并且该视图不是接收者,则此方法会在使接收器成为新的超级视图之前删除先前的超视图。
答案 2 :(得分:0)
即使它有效,您也会在滚动视图中看到重复的视图。您必须创建视图的x个实例并将它们添加到滚动视图中。
无论如何,这都是令人毛骨悚然的代码。1
UIView *userView = [classArray objectAtIndex:i];
[userView release];
你不必释放它,因为它不是你的!
2:为什么在视图上迭代两次?没有意义,更好
NSMutableArray* myArray = [[NSMutableArray alloc] initWithObjects: firstView,secView,thirdView,fourthView];
for (UIView* view in myArray)
{
//set the Frame and add it the the ScrollView
}