0

スクロール ビューを作成し、スクロール ビューにボタンを設定しました。ボタンは水平にスクロールします。ビューコントローラーのサブビューとしてテーブルビューを作成しました。ボタンをクリックすると、XML 解析を使用して RSS フィードからのデータがテーブル ビューに表示されます。SOボタンのクリックに依存するテーブルビューのデータを変更します。次のボタンを選択するように変更すると、解析が開始され、データが表示されます。なので時間がかかります。その間、私はいくつかのビューを表示するか、ビューを無効にしたいと考えています(つまり、その解析時にビューが無効になっているか、ユーザーはアクティビティインジケーターでフリーズするようなことはできません)。各ボタンを変更すると、アクションが発生します。いくつかのチュートリアルを参照しましたが、わかりませんか? 問題を解決するために同期メソッドを使用するように言われた人もいました。しかし、私はそれについて何の考えも持っていません。

下の画像を参照してください。

画像

前もって感謝します!

よろしく、
プーガル

4

1 に答える 1

1

ユーザー入力を無効にするために同期ネットワーク呼び出しを使用しないでください。それを提案した人は誰でも、あなたに非常に悪いアドバイスをしました。

現在のビューとそのサブビューの入力を無効にするだけの場合はself.view.userInteractionEnabled = NO;、View Controller で行うことができます。

ウィンドウ全体の入力を無効にしたい場合は、次のことができますself.view.window.userInteractionEnabled = NO;

ユーザー インターフェイスの上に全画面表示を重ねる場合は、ユーザー インタラクションを無効にする必要はまったくありません。あなたのモックアップ画像に基づいて、これがあなたがやろうとしていることだと思います. これを行うには、次のようにします。

self.overlayView = [[[UIView alloc] initWithFrame:self.view.window.bounds] autorelease];
self.overlayView.backgroundColor = [UIColor blackColor];
self.overlayView.alpha = 0.5f;
[self.view.window addSubview:self.overlayView];
self.activityIndicator = [[[UIActivityIndicator alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite] autorelease];
self.activityIndicator.center = self.view.window.center;
[self.view.window addSubview:self.activityIndicator];
[self.activityIndicator startAnimating];
self.activityLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
self.activityLabel.text = @"Loading...";
[self.activityLabel sizeToFit];
self.activityLabel.center = CGPointMake(self.activityIndicator.center.x, self.activityIndicator.center.y - self.activityIndicator.frame.size.height);
[self.view.window addSubview:self.activityLabel];
于 2010-08-31T16:14:50.763 に答える