使用initWithCoder和委托

时间:2015-12-06 08:36:38

标签: objective-c macos cocoa singleton xib

所以我的问题是:

我正在尝试为自定义视图xib设置单例。当我发出通知时,它不会被观察者抓住,因为显然我的组合框具有与“_sharedInstance”不同的“自我”。

这是代码 - initWithCoder

-(id)initWithCoder:(NSCoder *)coder{
   if (_sharedInstance){
       self = _sharedInstance;
       return self;
   }else{
       _sharedInstance = [super initWithCoder:coder];    
       return _sharedInstance;
   }
}

awakeFromNib :(因为在initWithCoder中: _sharedInstance.cmbBox 为零)

-(void)awakeFromNib{
    _sharedInstance.cmbBox.delegate = _sharedInstance;
}

应该抓住组合框选择的代表:

// NSComboBoxDelegate:
-(void)comboBoxSelectionDidChange:(NSNotification *)notification{
    if (notification.object == _sharedInstance.cmbBox){
         NSLog(@"Do Something!");
         [[NSNotificationCenter defaultCenter] postNotificationName:@"DoSomething" object:_sharedInstance userInfo:nil];
    }
}

问题是 notification.object!= _sharedInstance.cmbBox ,所以它永远不会进入if语句......

我做了些蠢事吗? :)

0 个答案:

没有答案