1

接続されたページコントロールを使用して基本的なスクロールビューを作成しようとしていますが、コードでいくつかの問題が発生しました。私のviewDidLoadメソッドは次のようになります。

- (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を出力します。これは、どのビューもスクロールビューに追加されていないことを示します。

すべての助けは非常にありがたいです:)

4

1 に答える 1

2

問題は、viewDidLoadでそれを行うことです。コードをviewDidAppear:に移動すると、正常に機能するはずです。フレームはまだviewDidLoadに設定されていません。

于 2013-01-16T20:51:31.283 に答える