2

StoryBoardでUIVIewControllerにUIButtonを配置しました。

xxxVIEWController.h 内

@interface xxxViewController : UIViewController{

IBOutlet UIButton *But;
}
@property (retain, nonatomic) IBOutlet UIButton *But;

別のクラスから「*But」にアクセスしてUIButtonのsetimageを変更したい。

UIViewControllerのインスタンスを取得できれば解決かと思いますが……。

誰かヒントをくれませんか


ありがとう He-Was、Jasper Blues コメントを追加しました。

1 つは、ナビゲーション コントローラーを含まない xxxViewController です。ボタンは 4 つしかありません。

もう 1 つは、アプリケーションの時間を管理する TimerClass (NSObject) です。

TimerClass クラスにはタイマーがあります。私がやりたいのは、TimerClass から数秒ごとに xxxViewController のボタンの色を変更することです。

TimerClass メソッドに簡単にアクセスできます。xxxViewController には TimerClass インスタンスがあるためです。

しかし、xxxViewController は自動で作成されたので、TimerClass から xxxViewController インスタンスを取得する方法がわかりません。

4

2 に答える 2

1

そうです、プロパティを宣言したので、更新を行うクラスから xxxViewController へのポインタが必要です。

UINavigationController にある場合は、そこからアクセスできます。それ以外の場合 (始めたばかりの場合に備えて、これを単純に保つようにしています)、たとえば AppDelegate に配置できます。

于 2013-01-15T00:58:42.610 に答える
1

xxxVIewControllerのデリゲートとしてセットアップし、インスタンスTimerClassを作成するときに、デリゲートを に設定します。TimerClassself

すなわち:

self.timer = [[TimerClass alloc] init];
self.timer.delegate = self;  // This assumes that you have already created a declared property called delegate in your `TimerClass` class

次に、ボタンを更新するときが来たら、デリゲート関数を呼び出してxxxVIewController、独自のボタンを更新する必要があります。

// Or whatever method that you want called
if (self.delegate respondsToSelector(@selector(changeButtonColor)))
{
    [self.delegate changeButtonColor];
}

慣れていない場合は、プロトコルを読んでください。より一般的な方法でこれを実装する良い方法がわかります。

于 2013-01-15T05:20:08.963 に答える