【问题标题】:Update the value of an NSSlider in realtime实时更新 NSSlider 的值
【发布时间】:2017-09-22 03:43:51
【问题描述】:

在我的 swift 3 应用程序中,我有一个这样创建的 NSSlider:

self.myAwesomeSlider = NSSlider(frame:CGRect(x: 10, y: 100, width: 20, height: 300))
self.myAwesomeSlider?.cell = NSSlider()
self.myAwesomeSlider?.maxValue = 127
self.myAwesomeSlider?.target = self
self.myAwesomeSlider?.isContinuous = true
self.view?.addSubview(self.myAwesomeSlider!)

我现在想做的是(从另一个函数)实时更新这个滑块的值。

我尝试这样做非常基本:

self.myAwesomeSlider?.integerValue = Int(value)

但它不会更新点。我希望得到的是计算出新值,并且滑块上的点会根据值移动。

这可能吗?

谢谢


编辑

self.myAwesomeSlider?.integerValue = Int(value)

显然,这确实有效,但是,我必须单击另一个应用程序才能看到实际更改。

【问题讨论】:

  • change NSSlider Value programmatically 在这里,他们按照您的要求以编程方式进行操作 :)
  • @Kimdv 是的,他们这样做了,这是设置值的正常方式,但是,我希望我的实时更新,所以我需要能够在事后设置值,这样做对我来说并不完全有效。
  • UI 元素仅在程序控制返回到主事件循环时更新(并且必须在主线程上更新)。
  • @MartinR 所以这不可能?
  • @WesleyLi stackoverflow.com/questions/9015767/nsslider-animation?rq=1 这是他们如何通过更改值对其进行动画处理。

标签: swift macos swift3 nsslider


【解决方案1】:
 myAwesomeSlider.addTarget(self, action: "sliderValueChanged:", forControlEvents: UIControlEvents.ValueChanged)

func sliderValueChanged(){

 var slider = sender as! UISlider
   label.text = "\(slider.value)"

}

【讨论】:

  • 请添加说明为什么此代码将回答问题。
  • 小问题,这是IOS的代码,mac开发不能用那种东西
猜你喜欢
  • 1970-01-01
  • 2018-09-06
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 2011-09-20
相关资源
最近更新 更多