将消息发送到其视图控制器时查看不更新

时间:2012-11-08 21:44:05

标签: objective-c xcode cocoa model-view-controller

当来自其他类的邮件发送到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);

以下是View Controller类定义:

@interface CountdownViewController : NSViewController

@property (weak) IBOutlet NSTextField *label;

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

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

1 个答案:

答案 0 :(得分:0)

观点持弱? 如果您需要在此类中保留该指针,请尝试强大

btw:..那你为什么objc_msgsend ....使用performSelector