gpt4 book ai didi

ios - Swift viewdidload 中的 @IB Action 函数

转载 作者:搜寻专家 更新时间:2023-11-01 05:58:02 24 4
gpt4 key购买 nike

是否可以在 viewDidLoad() 中使用 @IB Action 函数?

这个 Action 很简单 - 一个 Stepper 相应地增加其他 label.text 值。但是,步进器需要使用的值取决于 url 的返回内容——当然,这些内容只有在 viewDidLoad() 之后才知道。

所以我认为我不能在 viewDidLoad() 之前将 IBaction 置于顶部,如果我尝试在 viewDidLoad() 中执行我的 IB 操作,我得到的错误是:

“只能将实例方法声明为‘IBAction’”

编辑

让我澄清一下,很抱歉造成混淆。我知道我需要一个 socket 来从中获取 UIStepper 值。我有那个:

    @IBOutlet weak var stepper: UIStepper!

然后我有一个操作也连接到同一个 UIStepper,它将相应地增加/减少标签文本 (new_total) 的值:

@IBOutlet weak var new_total: UILabel!

@IBAction func step_up_pass(sender: AnyObject) {
new_total.text = "\(Int(stepper.value))"
}

但是,我想从一个值 (todays_price) 开始,我从一个 json 请求中返回并将其用作起点,使用步进器将其相乘并将相乘后的值放入标签的文本中。

我在单独的文件中有一个结构体定义了我的对象:

struct PassengerFromOtherBus {

var fname: String?
var lname: String?
var todays_price: Int?


init(json: NSDictionary) {
self.fname = json["fname"] as? String
self.lname = json["lname"] as? String
self.todays_price = json["todays_price"] as? Int
}

所以稍后在 View Controller 中,在 viewDidLoad() 内部,在连接到 URL 然后使用 NSJSONSerialization 和一堆其他代码解析它之后(我不需要让你混淆)我终于有我的值(value) todays_price。所以我的问题是,当它只在我的 viewDidLoad() 内部已知时,我如何让我的操作使用该值? Xcode 甚至不允许我将 IBAction 连接到 viewDidLoad 函数内的任何地方!

最佳答案

这不是通过 Action 完成的,而是通过 Outlet 完成的。将 IB 的 Stepper 作为 Outlet 连接到您的 ViewController。然后只需在 ViewDidLoad 中设置 Stepper 的值即可。

enter image description here

我绝不会直接从 UIStepper.value 转到 UILabel.text。使用中间变量来存储值。

JSON 的返回做同样的事情。通过在这些变量上设置 didSet 函数,您可以在更新任何值时更新 UI。

class FirstViewController: UIViewController {

var todays_price: Int = 0 {
didSet { // didSet to trigger UI update
myLabel.text = "\(stepperValue * todays_price)"
}
}

var stepperValue : Int = 1 {
didSet { // didSet to trigger UI update
myLabel.text = "\(stepperValue * todays_price)"
}
}

@IBOutlet weak var myStepper: UIStepper!
@IBOutlet weak var myLabel: UILabel!

override func viewDidLoad() {
//
let returnValueFromJson = 10
todays_price = returnValueFromJson

}

@IBAction func stepperUpdate(sender: AnyObject) {

stepperValue = Int(myStepper.value)

}

}

关于ios - Swift viewdidload 中的 @IB Action 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601231/

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