【发布时间】:2015-11-09 01:37:35
【问题描述】:
是否可以在 viewDidLoad() 中包含 @IB Action 函数?
这个动作是一个简单的动作 - 一个相应地增加其他 label.text 值的步进器。但是,步进器需要使用的值取决于 url 的返回内容——当然只有在 viewDidLoad() 之后才知道。
所以我认为我不能在 viewDidLoad() 之前将 IBaction 置于顶部,如果我尝试在 viewDidLoad() 内执行 IB 操作,我得到的错误是:
“只有实例方法可以声明为‘IBAction’”
编辑
让我澄清一下,很抱歉造成混乱。我知道我需要一个出口来获取 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))"
}
但是,我想从我从 json 请求返回的值 (todays_price) 开始,并将其用作起点,使用步进器将其相乘并将相乘后的值放入标签的文本中。
我在一个单独的文件中有一个结构,它定义了我的对象:
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
}
}
所以稍后在视图控制器中,在 viewDidLoad() 内部,在连接到 URL 然后使用 NSJSONSerialization 和这里的一堆其他代码(我不需要混淆你)解析它之后,我终于今天的价格有我的价值。所以我的问题是,当它只在我的 viewDidLoad() 内部知道时,如何让我的操作使用该值? Xcode 甚至不允许我将 IBAction 连接到 viewDidLoad 函数内的任何位置!
【问题讨论】:
-
发布您的代码。目前还不清楚你的问题是什么
-
您的问题实际上是:我正在异步获取数据,需要时间才能完成。当它完成时,我的视图已经加载。如何及时获取我的数据,这样我就不必在 UI 可见时更新它?
-
嗯,我想你可以这样说,是的
-
好的,我明天贴代码
标签: ios swift ibaction viewdidload