gpt4 book ai didi

ios - 在 Swift 的 ONE ViewController 中的 View 之间传递数据

转载 作者:可可西里 更新时间:2023-11-01 02:22:47 26 4
gpt4 key购买 nike

我所做的所有搜索都集中在 View Controller 之间传递数据。这不是我真正想要做的。我有一个包含多个 View 的 ViewController。 ViewController 有一个工作正常的 slider :

var throttleSetting = Float()
@IBAction func changeThrottleSetting(sender: UISlider)
{
throttleSetting = sender.value
}

然后,在同一个 ViewController 中包含的其中一个 View 中,我有一个基本行(现在)设置一个初始值,稍后在代码的 DrawRect 部分中使用该值:

var RPMPointerAngle: CGFloat {
var angle: CGFloat = 2.0
return angle
}

我想做的是将 slider 的值从 ViewController 传递到包含在 ViewController 中的 View ,以允许 drawRect 是动态的。

感谢您的帮助!

最佳答案

编辑:抱歉,当我创建这个答案时,我想到了 ViewControllers。一种更简单的方法是在 SomeView 中创建一个方法并直接与其对话。

例子:

class MainViewController: UIViewController {

var view1: SomeView!
var view2: SomeView!

override func viewDidLoad() {
super.viewDidLoad()

// Create the views here
view1 = SomeView()
view2 = SomeView()

view.addSubview(view1)
view.addSubview(view2)
}

@IBAction func someAction(sender: UIButton) {
view1.changeString("blabla")
}
}

class SomeView: UIView {

var someString: String?

func changeString(someText: String) {
someString = someText
}
}

代表:

首先你创建一个协议(protocol):

protocol NameOfDelegate: class {     // ": class" isn't mandatory, but it is when you want to set the delegate property to weak
func someFunction() // this function has to be implemented in your MainViewController so it can access the properties and other methods in there
}

在您的 View 中,您必须添加:

class SomeView: UIView, NameOfDelegate {

// your code

func someFunction() {

// change your slider settings
}
}

最后一步,您必须添加委托(delegate)的属性,以便您可以与其“对话”。我个人认为这个属性是某种门,介于两个类之间,这样他们就可以互相交谈。

class MainViewController: UIViewController {

weak var delegate: NameOfDelegate?

@IBAction func button(sender: UIButton) {
if delegate != nil {
let someString = delegate.someFunction()
}
}
}

我在这里使用了一个按钮来展示如何使用委托(delegate)。只需将其替换为您的 slider 即可更改 View 的属性

编辑:我忘记提及的一件事是,您需要以某种方式将 SomeView 指定为委托(delegate)。但就像我说的,我不知道你是如何创建 View 等的,所以我无法帮助你。

关于ios - 在 Swift 的 ONE ViewController 中的 View 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29934078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com