1

他のクラスからアクセスする必要があるクラス「loadingViewController」に関数があります。次のように初めて関数を呼び出すと機能しますが、別のクラスから再度呼び出すと、再度割り当ててパラメーターをリセットするため、機能しません。インスタンスメソッドを作成しても同じです。initまたは再度割り当てずに別のクラスから関数を呼び出す方法は? おそらく基本的な初心者の問題...ありがとう。

クラスがヘッダーで宣言され、適切に合成されました。

self.loadingController = [[loadingViewController alloc] initWithNibName:@"loadingViewController" bundle:nil];
[loadingController incrementProgress:0.1];
4

4 に答える 4

2

より多くのコードを見ずに確実に言うのは難しいですが、私はあなたがloadingController一度だけ初期化することを確認する必要があると思っています:

if ( self.loadingController == nil ) {
    self.loadingController = [[loadingViewController alloc] initWithNibName:@"loadingViewController" bundle:nil];
}
[self.loadingController incrementProgress:0.1];
于 2012-04-12T19:15:30.237 に答える
1

ここで実装できprotocolsます。プロトコルは、あるクラスから別のクラスのメソッドを呼び出すために使用されます。一般に、クラスが実装するメソッドのセットを定義します。それを実装する方法を見るには、この回答を見ることができます。

于 2012-04-12T19:20:33.920 に答える
1

私はこれを行います:

-(void) loadingViewController
{
    if ( self.loadingController == nil ) {
        self.loadingController = [[loadingViewController alloc] initWithNibName:@"loadingViewController" bundle:nil];
    }
    [self.loadingController incrementProgress:0.1];
}

そして、メイン UI スレッド以外のスレッドから [xyz loadingViewController] を呼び出さないようにしてください。

于 2012-04-12T19:36:04.267 に答える
0

ビューコントローラーで関数を呼び出したい理由は、長い操作の進行状況をユーザーに提示するためのようです。

より一般的なアプローチは、View Controller で操作を開始し、その進行状況を監視して、それに応じてビューを更新することです。

于 2012-04-12T19:44:45.873 に答える