1

用語が正しくない場合は申し訳ありません。Objective C を学習してまだ数日なので、まだ少し慣れていません。

Xcodeのストーリーボードの「クイックドラッグ」機能を使用してViewController、プログレスバー(UIProgressView)が接続されている があります。IBOutletViewController は、私が作成したカスタム クラスのオブジェクトをインスタンス化します。約15〜20秒かかる長い作業を行うオブジェクトのセレクターにメッセージを渡します。ジョブの進行に合わせて進行状況バーを更新できるようにしたいのですが、呼び出し元のクラスにアクセスしてこれを行う方法がわかりませんUIProgressView。オブジェクトのメソッドは、制限を知っている長いループを実行し、ループ内の現在の位置に基づいて進行状況バーを更新できるため、タイマーを使用する必要はありません。

客観的な C プログラミングではかなり基本的な概念だと思いますが、正しい方向性やドキュメントに向けた製品は本当に助けになるでしょう。

4

2 に答える 2

1

デリゲート パターンを使用します。

ProgressBar 更新用のプロトコルを作成します。

@protocol MyProgressBarDelegate

- (void) onUpdateProgress:(NSInteger)progress;

@end

ViewController はデリゲートを実装し、この onUpdateProgress メソッドを含みます。

カスタム クラスには、そのイニシャライザで設定したデリゲート変数があり、ViewController インスタンスに設定されています。

id <MyProgressBarDelegate> delegate;

delegate:(id)delegate をパラメーターとして渡すように、CustomClass 指定イニシャライザーを更新します。

- (void) initWithDelegate:(id<MyProgressBarDelegate>)delegate
{
    self.delegate = delegate;
}

CustomClass を初期化するとき、[[CustomClass alloc] initWithDelegate:self];

またはデリゲートを設定可能な @property にし、[mCustomClass setDelegate:self] を介して更新します。

次に、カスタム クラスから onUpdateProgress メソッドを呼び出すことができます。

if (delegate != nil)     
 [delegate onUpdateProgress:int];
于 2012-08-14T13:42:33.253 に答える
0

ビューコントローラをカスタムクラスのデリゲートとして割り当て、カスタムクラスにその進行状況をビューコントローラに報告させることができます。まず、カスタムクラスのデリゲートのプロトコルを定義し、次にView Controllerをそのプロトコルに準拠させ、カスタムクラスのインスタンスを作成したらデリゲートを割り当てます。

于 2012-08-14T13:40:56.260 に答える