我希望在单击步进器时更改圆的颜色。我相信问题在于我正在使用该类的实例。
这是我的第一个档案:
类ViewController:UIViewController {
select * from anothertable a join ( select *, row_number() over (partition by targetid order by priority desc) rn from yourtable) t on a.id = t.targetid and t.rn = 1
}
这是我的第二个档案:
类UIView1:UIView {
@IBOutlet var redValue: UILabel! @IBOutlet var greenValue: UILabel! @IBOutlet var blueValue: UILabel! @IBOutlet var redStepper: UIStepper! @IBOutlet var greenStepper: UIStepper! @IBOutlet var blueStepper: UIStepper! var redd = 0.0; var greenn = 0.0; var bluee = 0.0; @IBAction func redChange(sender: UIStepper) { redValue.text = Int(sender.value).description; redd = sender.value; } @IBAction func greenChange(sender: UIStepper) { greenValue.text = Int(sender.value).description; greenn = sender.value; } @IBAction func blueChange(sender: UIStepper) { blueValue.text = Int(sender.value).description; bluee = sender.value; }
}
答案 0 :(得分:0)
可能存在各种连接问题,因为我们无法看到代码/ IB。但是,我怀疑你是否错过了通知视图需要重绘自己的调用,因为基础值已经改变。
self.view.setNeedsDisplay()
这是我以前用于实验的整个游乐场,代码中包含各种mod。检查最后一个副本以查看更改。注意:UI元素实际上并未创建,我在手动设置UIStepper.value
后模拟了一个光泽。
import UIKit
class ViewController: UIViewController {
@IBOutlet var redValue: UILabel!
@IBOutlet var greenValue: UILabel!
@IBOutlet var blueValue: UILabel!
@IBOutlet var redStepper: UIStepper!
@IBOutlet var greenStepper: UIStepper!
@IBOutlet var blueStepper: UIStepper!
var redd = 100.0;
var greenn = 100.0;
var bluee = 100.0;
@IBAction func redChange(sender: UIStepper)
{
redValue?.text = Int(sender.value).description
redd = sender.value
self.view.setNeedsDisplay()
}
@IBAction func greenChange(sender: UIStepper)
{
greenValue.text = Int(sender.value).description
greenn = sender.value
}
@IBAction func blueChange(sender: UIStepper)
{
blueValue.text = Int(sender.value).description
bluee = sender.value
}
}
class UIView1: UIView {
var colors = ViewController()
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
}
override func drawRect(rect: CGRect)
{
let circle2 = UIView(frame: CGRect(x: -25.0, y: 10.0, width: 100.0, height:100.0))
circle2.layer.cornerRadius = 50.0
let startingColor2 = UIColor(red: CGFloat(colors.redd/255.0),
green: (CGFloat(colors.greenn))/255,
blue: (CGFloat(colors.bluee))/255,
alpha: 1.0)
circle2.backgroundColor = startingColor2;
addSubview(circle2);
}
}
let v = UIView1(frame: CGRectMake(0,0,400, 240))
v.colors.view = v
let rstepper = UIStepper(frame: CGRectMake(0,0,300,50))
rstepper.maximumValue = 255.0
rstepper.value = 240.0
v.colors.redChange(rstepper)
// inspect the view now:
v
答案 1 :(得分:0)
是的,这确实是问题所在。
var colors = ViewController()
创建一个与包含视图的视图控制器实例无关的新实例。在视图的drawrect代码中引用colors.redd没有到达活动视图控制器。
关系应该是另一个方向。您的视图控制器应该知道您的自定义视图的实例(通常通过插座),它应该设置您的视图的颜色属性,或者至少作为一种代理工作。