2013-01-16 78 views
1

我正在嘗試使用連接的頁面控件進行基本滾動視圖,並且遇到了一些與我的代碼有關的問題。我的viewDidLoad方法是這樣的:iOS/Obj-C UIScrollView視圖沒有被正確添加

- (void)viewDidLoad{ 
[super viewDidLoad]; 
NSLog (@"View did load"); 
// Do any additional setup after loading the view, typically from a nib. 

scrollView.delegate = self; 
scrollView.pagingEnabled=YES; 

NSArray *frames = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil]; 
for (int i = 0; i < frames.count; i++) { 
    CGRect frame; 
    frame.origin.x = self.scrollView.frame.size.width * i; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 

    UIView *subview = [[UIView alloc] initWithFrame:frame]; 
    subview.backgroundColor = [frames objectAtIndex:i]; 
    [self.scrollView addSubview:subview]; 
    NSLog (@"Looped, i = %i color = %@", i, [frames objectAtIndex:i]); 
} 

self.scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * frames.count, scrollView.frame.size.height); 
NSLog(@"The width is: %f", self.scrollView.frame.size.width); 
} 

這個問題似乎是彩色幀我嘗試添加到視圖永遠不會出現(甚至不是第一個)。如果我沒有啓用ARC,我會在每個循環結束時釋放CGRect框架,但是它確實應該使用ARC來完成,對吧?

當我在模擬器和實際手機上運行應用程序時,屏幕底部會出現UIPageControl點的黑屏。當我用手指滑過ScrollView時什麼也沒有發生,但是如果我將它拉到一邊很遠,pageControl就會移動到下一個「點」。

最後一個NSLog語句總是輸出0.0000,表示沒有視圖添加到滾動視圖中。

所有幫助非常感謝:)

+0

你能告訴我們你在哪裏初始化了滾動視圖嗎? nib文件是否正確設置?你能記錄self.scrollView的值嗎? – Shaun

+0

來自頭文件: (at)property(nonatomic,retain)IBOutlet UIScrollView * scrollView; 從執行: (at)合成scrollView; scrollView連接到Interface Builder中的標題中的屬性,並且正在使用故事板。據我所知,在包含scrollView的故事板視圖中沒有錯誤。感謝您的回答:) –

回答

2

問題是在viewDidLoad中這樣做。將代碼移到viewDidAppear:它應該可以正常工作。框架尚未在viewDidLoad中設置。

+0

哇謝謝一堆!這立即解決了我的問題!榮譽:) –

+0

我可以問你一個額外的問題,@ rdelmar?如果我希望在這些視圖中放置三個不同的視圖控制器,而不是具有不同顏色的空白頁面,我將如何實現這一目標? –

+0

@HenrikHillestadLøvold,有點複雜。您需要將它們添加爲包含滾動視圖的viewController的childViewControllers。您應該閱讀蘋果的自定義容器控制器文檔,以瞭解您如何使用它們。 – rdelmar