cocoa 坑爹的委托
通过委托传递数值,搞了大半天,终于结束了这个恶魔,现在总结下:
view1.h
#import <Foundation/Foundation.h>
@protocol setAppControllerDelegate;
@interface view1 : NSObject {
//id _delegate;
PreferenceController *preferenceController;
NSObject<setAppControllerDelegate>*m_appControllerDelegate;
}
-(void)changeBgColor:(NSColor*)color;
- (IBAction)showPreferencePanel:(id)sender;
@end
view1.m
#import "AppController.h"
@implementation AppController
-(void)changeBgColor:(NSColor*)color;
{
NSLog("通过委托传过来的颜色值为:%@",color);
}
@end
view2.h
#import <Foundation/Foundation.h>
@classAppController;
@protocol ChangeViewBgColorDelegate;
@interface PreferenceController : NSWindowController {
AppController*b;
id<ChangeViewBgColorDelegate>m_dChangeViewBgColorDelegate;
}
@property(nonatomic,retain) id m_dChangeViewBgColorDelegate;
@end
//代理申明
@protocol ChangeViewBgColorDelegate<NSObject>
-(void)changeBgColor:(NSColor*)color;
@end
view2.m
#import "PreferenceController.h"
#import "AppController.h"
@implementation PreferenceController
@synthesize m_dChangeViewBgColorDelegate;
- (id)init
{
if (![superinitWithWindowNibName:@"preferences"]) {
[self window];
b = [[AppController alloc] init];
self.m_dChangeViewBgColorDelegate = b;
//通过代理传递一个颜色值为blue的值
[m_dChangeViewBgColorDelegatechangeBgColor:blueColor];
}
- (void)dealloc{
[b release];
[super dealloc];
}
@end