2011-12-21 111 views
0

我已創建了一個滾動視圖和上滾動視圖滾動視圖,我加入兩個交替的自定義的UIView小號添加視圖到

@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個自定義視圖

請幫我解決這個問題。

回答

1

您要添加的firstView,secondView多時間在陣列中,即使你加它,它指的是同一個實例

NSMutableArray *classArray= [[NSMutableArray alloc] initWithObjects:firstView, secondView, firstView, secondView, nil]; 
0

UIView只能有一個父視圖。您多次使用相同的UIView實例。如果你添加一個UIView到另一個,它會從它當前連接的那個中移除。

讀取UIView類參考,addSubview:

視圖只能有一個上海華。如果視圖已經有一個超級視圖,並且該視圖不是接收者,則在使接收者成爲新的超級視圖之前,此方法將刪除先前的超級視圖。

+0

我加入的UIScrollView的 – 2011-12-21 09:56:42

+0

我知道所有的UIView,而是看你的陣列 「[[NSMutableArray的頁頭] initWithObjects:的firstView,secondView,的firstView,secondView,零]。」您多次使用相同的實例。您需要爲屏幕上的每個UIView創建唯一的UIView實例,它們可以具有相同的類型/類。這意味着* view1 = [FirstView alloc] init],* view2 = [[FirstView alloc] init],* view3 = [[SecondView alloc] init],* view4 = [[SecondView alloc] init] .... etc – bandejapaisa 2011-12-21 10:01:31

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 
}