如何从不同的 swift class 重置 variable/stepper 值
How to reset variable/stepper value from a different swift class
我希望我的步进器值在单独 class 中的某些变量彼此相等时重置。我尝试使用 ViewController 的一个实例,但出现错误。我的变量重置了,但步进器没有。
CircleViewClass:
class CircleView: UIView
{
var colors1=ViewController()
func updateStepper
{
if(redd1==Int(red1)&&greenn1==Int(green1)&&bluee1==Int(blue1))
{
redd1=0;
greenn1=0;
bluee1=0;
colors1.redStepper.value=0.0;//
colors1.greenStepper.value=0.0;//
colors1.blueStepper.value=0.0;//
}
}
}
ViewController Class:
class ViewController: UIViewController
{
var colors = CircleView()
@IBOutlet weak var circleView1: CircleView!
@IBOutlet weak var blueStepper: UIStepper!
@IBOutlet weak var greenStepper: UIStepper!
@IBOutlet weak var redStepper: UIStepper!
@IBAction func stepperChange(sender: UIStepper)
{
circleView1.redd1 = Int(redStepper.value);
redValue.text = Int(sender.value).description;
}
@IBAction func stepperChange1(sender: UIStepper)
{
circleView1.greenn1 = Int(greenStepper.value);
greenValue.text = Int(sender.value).description;
}
@IBAction func stepperChange2(sender: UIStepper)
{
circleView1.bluee1 = Int(blueStepper.value);
blueValue.text = Int(sender.value).description;
}
}
您可以使用这样的委托模式:
// Add a delegate to your CircleView to reach back to your owning ViewController
protocol CircleViewDelegate {
func updateRedStepperValue(value: Double)
func updateGreenStepperValue(value: Double)
func updateBlueStepperValue(value: Double)
}
class CircleView: UIView
{
var colors1=ViewController()
var delegate: CircleViewDelegate?
func updateStepper
{
if(redd1==Int(red1)&&greenn1==Int(green1)&&bluee1==Int(blue1))
{
redd1 =0;
greenn1 =0;
bluee1 =0;
// Call back to your delegate
delegate?.updateBlueStepperValue(0.0)
delegate?.updateGreenStepperValue(0.0)
delegate?.updateRedStepperValue(0.0)
}
}
}
您的 ViewController
将订阅委托回调:
class ViewController: UIViewController, CircleViewDelegate
{
var colors = CircleView()
@IBOutlet weak var circleView1: CircleView!
@IBOutlet weak var blueStepper: UIStepper!
@IBOutlet weak var greenStepper: UIStepper!
@IBOutlet weak var redStepper: UIStepper!
@IBAction func stepperChange(sender: UIStepper)
{
circleView1.redd1 = Int(redStepper.value);
redValue.text = Int(sender.value).description;
}
@IBAction func stepperChange1(sender: UIStepper)
{
circleView1.greenn1 = Int(greenStepper.value);
greenValue.text = Int(sender.value).description;
}
@IBAction func stepperChange2(sender: UIStepper)
{
circleView1.bluee1 = Int(blueStepper.value);
blueValue.text = Int(sender.value).description;
}
// Your delegate callback methods
func updateRedStepperValue(value: Double) {
redStepper.value = value
}
func updateGreenStepperValue(value: Double) {
greenStepper.value = value
}
func updateBlueStepperValue(value: Double) {
blueStepper.value = value
}
override func viewDidLoad() {
super.viewDidLoad()
// Make sure to set the delegate outlet
colors.delegate = self
}
}
我希望我的步进器值在单独 class 中的某些变量彼此相等时重置。我尝试使用 ViewController 的一个实例,但出现错误。我的变量重置了,但步进器没有。
CircleViewClass:
class CircleView: UIView
{
var colors1=ViewController()
func updateStepper
{
if(redd1==Int(red1)&&greenn1==Int(green1)&&bluee1==Int(blue1))
{
redd1=0;
greenn1=0;
bluee1=0;
colors1.redStepper.value=0.0;//
colors1.greenStepper.value=0.0;//
colors1.blueStepper.value=0.0;//
}
}
}
ViewController Class:
class ViewController: UIViewController
{
var colors = CircleView()
@IBOutlet weak var circleView1: CircleView!
@IBOutlet weak var blueStepper: UIStepper!
@IBOutlet weak var greenStepper: UIStepper!
@IBOutlet weak var redStepper: UIStepper!
@IBAction func stepperChange(sender: UIStepper)
{
circleView1.redd1 = Int(redStepper.value);
redValue.text = Int(sender.value).description;
}
@IBAction func stepperChange1(sender: UIStepper)
{
circleView1.greenn1 = Int(greenStepper.value);
greenValue.text = Int(sender.value).description;
}
@IBAction func stepperChange2(sender: UIStepper)
{
circleView1.bluee1 = Int(blueStepper.value);
blueValue.text = Int(sender.value).description;
}
}
您可以使用这样的委托模式:
// Add a delegate to your CircleView to reach back to your owning ViewController
protocol CircleViewDelegate {
func updateRedStepperValue(value: Double)
func updateGreenStepperValue(value: Double)
func updateBlueStepperValue(value: Double)
}
class CircleView: UIView
{
var colors1=ViewController()
var delegate: CircleViewDelegate?
func updateStepper
{
if(redd1==Int(red1)&&greenn1==Int(green1)&&bluee1==Int(blue1))
{
redd1 =0;
greenn1 =0;
bluee1 =0;
// Call back to your delegate
delegate?.updateBlueStepperValue(0.0)
delegate?.updateGreenStepperValue(0.0)
delegate?.updateRedStepperValue(0.0)
}
}
}
您的 ViewController
将订阅委托回调:
class ViewController: UIViewController, CircleViewDelegate
{
var colors = CircleView()
@IBOutlet weak var circleView1: CircleView!
@IBOutlet weak var blueStepper: UIStepper!
@IBOutlet weak var greenStepper: UIStepper!
@IBOutlet weak var redStepper: UIStepper!
@IBAction func stepperChange(sender: UIStepper)
{
circleView1.redd1 = Int(redStepper.value);
redValue.text = Int(sender.value).description;
}
@IBAction func stepperChange1(sender: UIStepper)
{
circleView1.greenn1 = Int(greenStepper.value);
greenValue.text = Int(sender.value).description;
}
@IBAction func stepperChange2(sender: UIStepper)
{
circleView1.bluee1 = Int(blueStepper.value);
blueValue.text = Int(sender.value).description;
}
// Your delegate callback methods
func updateRedStepperValue(value: Double) {
redStepper.value = value
}
func updateGreenStepperValue(value: Double) {
greenStepper.value = value
}
func updateBlueStepperValue(value: Double) {
blueStepper.value = value
}
override func viewDidLoad() {
super.viewDidLoad()
// Make sure to set the delegate outlet
colors.delegate = self
}
}