【问题标题】:initializing a cocoa IB binding初始化可可 IB 绑定
【发布时间】:2012-07-25 06:04:19
【问题描述】:

我有一个 NSTextField 和一个 NSStepper,我正在尝试将它们绑定在一起。步进器设置为从 0 到 100,我希望初始值为 30。

对于步进绑定,我有: value:绑定到Object Controller,controller key = selection,model key path = edgeThreshold

对于步进器属性,我有 最小值=0,最大值=100,增量=1,电流=30

我已经以类似的方式设置了文本字段 绑定,值:绑定到对象控制器,控制器键 = 选择,模型键路径 = edgeThreshold

当我运行程序时,一切正常。如果我向上踩踏,文本字段会增加。如果我输入一个新值,然后点击步进器,该值会根据我输入的值进行调整。

问题是文本字段中的初始值是什么(空),状态的初始值似乎是0。如果我在启动后点击步进器,文本字段从无变为1。所以我不知道把 30 放在哪里,以及这个绑定的状态到底在哪里。我认为它可能在对象控制器中,所以我将它的字典设置为具有“selection.edgeThreshold”和 30 的键路径和值......但这也没有做任何事情。

【问题讨论】:

    标签: xcode cocoa cocoa-bindings


    【解决方案1】:

    您实际上并不需要对象控制器。您可以将文本字段和步进器的值绑定到属性 edgeThreshold。因此,如果在应用程序委托中声明了该属性,它们将被绑定到 App Delegate.edgethreshold。如果您随后在 applicationWillFinishLaunching 方法中将该属性设置为 30 (self.edgethreshold = 30;),则应用程序启动时文本字段将显示 30,并且步进器也将设置为 30(无论您使用什么将起始值设置为 IB,这将覆盖它)。

    【讨论】:

      【解决方案2】:

      我发现一个 youtube 视频几乎完全符合我的要求:

      http://www.youtube.com/watch?v=ESk6YLDtGR8

      我没有实例化一个对象控制器来处理绑定,而是给我的应用控制器一些属性,然后绑定到它。在应用控制器的 -init 方法中,我设置了我想要的启动值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 2017-01-22
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多