【问题标题】:IBAction is not being triggeredIBAction 没有被触发
【发布时间】:2015-03-11 09:39:59
【问题描述】:

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

该按钮已与我的File's Owner 中的IBAction 连接。我的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 操作已绑定到 NSButton。我没有用按钮做任何事情。有人知道为什么吗?

更新:

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

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:

    问题解决了。 问题是我对该框架进行本地化的方式造成的。 我的 UI 已通过复制德语的原始 XIB 进行了本地化,我没有注意到我必须为每个本地化 UI 分别连接带有 IBAction 的按钮。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 2012-06-03
      • 2019-11-07
      • 2018-09-01
      相关资源
      最近更新 更多