0

当来自另一个类的消息发送到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属性将更新为指向该视图的控制器类。每个视图控制器类都会有一个方法都命名为相同的东西,例如“action”。此方法应该更改视图上的某些内容。

所以AppController类中的“start”方法将调用ourViewController属性的“action”方法。为此,我使用了以下objc_msgSend()方法:

objc_msgSend(self.ourViewController, action);

这是视图控制器类定义:

@interface CountdownViewController : NSViewController

@property (weak) IBOutlet NSTextField *label;

- (IBAction)changeLabel:(id)sender;
- (void)start;
@end

NSLog()在 each 的“action”方法中放置了一个ViewController,以查看它是否有效,并且确实有效,但是“action”方法也应该更改标签的字符串值,但它没有。如果有人知道为什么视图没有更新,那将非常有帮助。谢谢!

4

1 回答 1

0

观点被认为是软弱的?如果您需要在此类中保留该指针,请尝试使其变得强大

顺便说一句:..你为什么还要 objc_msgsend.. 使用 performSelector

于 2012-11-08T21:53:10.673 回答