2012-05-03 12 views
5

次のメソッドを使用して、次の画面に進むときにオーバーレイの呼び出しを呼び出すUITableViewクラスがあります。問題は、このローディング画面がリストと一緒にスクロールしないということです。ちょっとスクロールして何かをクリックすると、ローディング画面は表示されません(上部にあるため)。どのようにして、ロードスクリーンを常にUITableViewの上に置くことができますか?各UITableViewは、UITabBarに含まれるUINavBarに含まれています。ここに私のコードです:オーバーレイがUITableViewでスクロールしない - iOS

-(void)createLoadScreen 
{ 
    CGRect screenRect = [self.view bounds]; 
    CGRect overlayFrame = CGRectMake(0.0, 0.0, screenRect.size.width, screenRect.size.height); 
    overlay = [[UIView alloc] initWithFrame:overlayFrame]; 
    overlay.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.7]; 
    CGRect frame = CGRectMake(screenRect.size.width/2 - 25.0, screenRect.size.height/2 - 70, 25.0, 25.0); 
    loading = [[UIActivityIndicatorView alloc] initWithFrame:frame]; 
    [loading setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    [loading sizeToFit]; 
    loading.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | 
           UIViewAutoresizingFlexibleRightMargin | 
           UIViewAutoresizingFlexibleTopMargin | 
           UIViewAutoresizingFlexibleBottomMargin); 
    loading.hidesWhenStopped = YES; 
    [overlay addSubview:loading]; 
} 

-(void)showActivityIndicator 
{ 
    [self.view addSubview:overlay]; 
    [loading startAnimating]; 
} 

-(void)removeActivityIndicator { 
    [loading stopAnimating]; 
    [overlay removeFromSuperview]; 
} 

答えて

5

あなたはUITableViewControllerを使用していますか?

テーブルビュー自体ではなく、テーブルのスーパービューにオーバーレイビューを追加することで問題を解決できるはずです。あなたのオーバーレイは実際にはあなたのスクロールテーブルビューよりも上にあり、スクロールテーブルビューから離れています。

-(void)showActivityIndicator 
{ 
    [[self.view superview] addSubview:overlay]; 
    [loading startAnimating]; 
} 
+0

美しい!ありがとうございました... –

+0

実際には何か今、ファンキーなことが起きています。 uiactivityindicatorは移動する場所(高さ方向)です。それがどうして起こっているのか分かりませんが、クリックした表のセルに応じてランダムに高くなったり低くなったりするようです。何か案は? –

+0

これは私がuitableview –

関連する問題