別のクラスからのメッセージが に送信されたときに、ビューの更新に問題がありますViewController
。
基本的に、異なるカスタム ビューが別のビューに交換される単一のウィンドウを持つアプリケーションがあります。これを管理し、正常に動作するAppController
クラスがあります。
@interface AppController : NSObject
@property (weak) IBOutlet NSView *ourView;
@property (strong) NSViewController *ourViewController;
- (IBAction)changeView:(id)sender;
- (IBAction)start:(id)sender;
- (void)changeViewContoller:(NSInteger)tag;
@end
新しいビューが別のビューに交換されるとourViewController
、そのビューのコントローラー クラスを指すようにプロパティが更新されます。すべてのView Controllerクラスには、「action」など、すべて同じ名前のメソッドがあります。このメソッドは、ビューの何かを変更することになっています。
したがって、AppController
クラスの「開始」メソッドは、プロパティの「アクション」メソッドを呼び出しourViewController
ます。これを行うには、次のobjc_msgSend()
方法を使用しました。
objc_msgSend(self.ourViewController, action);
View Controller クラスの定義は次のとおりです。
@interface CountdownViewController : NSViewController
@property (weak) IBOutlet NSTextField *label;
- (IBAction)changeLabel:(id)sender;
- (void)start;
@end
NSLog()
各 の「アクション」メソッドにを配置しViewController
て、それが機能しているかどうかを確認しましたが、「アクション」メソッドもラベルの文字列値を変更することになっていますが、そうではありません。ビューが更新されない理由を誰かが知っていれば、それは非常に役に立ちます。ありがとう!