IBAction没有被触发

时间:2015-03-11 09:40:00

标签: objective-c cocoa

我创建了一个框架,它显示了一个小窗口,告知用户正在运行的进程的当前进度。 该窗口带有一个自己的窗口控制器。此窗口控制器包含一些已绑定到NSProgressIndicator控件的某些属性的属性,以及绑定到按钮的Enabled属性的布尔属性,该属性将使用户能够取消当前操作。

该按钮已与IBAction内的File's Owner连接。我File's Owner的类型已设置为我的自定义窗口控制器。 NSProgressIndicator的绑定正常工作(更新值时正在填充栏)但NSButton的绑定没有。

Enabled属性都没有更改(虽然绑定属性已更改),按钮也没有触发它的IBAction方法。

以下是一些代码:

窗口控制器标题:

@property SEL cancelActionSelector;
@property id cancelDelgate;
@property double currentValue;
@property double maxValue;
@property BOOL cancelAvailable;

- (IBAction)cancelClicked:(id)sender;

窗口控制器实现:

- (IBAction)cancelClicked:(id)sender
{
    if (self.cancelDelgate && self.cancelActionSelector && [self.cancelDelgate respondsToSelector:self.cancelActionSelector])
    {
        NSLog(@"User requested update cancellation.");
        [self.cancelDelgate performSelector:self.cancelActionSelector];
    }
    else
    {
        NSLog(@"User requested update cancellation. Could not perform due to missing target (delegate: %@, selector: %p", self.cancelDelgate, self.cancelActionSelector);
    }
}

currentValuemaxValue已绑定到NSProgressIndicator控件(正常)和cancelAvailable以及cancelClicked操作已绑定到{ {1}}。我没有做任何按钮工作。有人知道为什么?

更新

按钮的NSButton绑定有效。所以这只是行动不起作用。我只是试图将Enabled属性绑定到窗口控制器本身。不起作用。

1 个答案:

答案 0 :(得分:0)

问题解决了。 问题是我对本框架进行本地化的结果。 我的UI已经通过复制德语的原始XIB进行了本地化,我没有注意到我必须单独为每个本地化的用户界面添加IBAction按钮。

因此,您必须将控件与每个本地化XIB中的相应操作连接起来。