我有一个包含 2 组数据的本地 Json 文件:图像及其描述(文本)。我正在生成随机数,函数根据这个数字从 Json 返回图像。还有一个单独的 UIButton,它创建一个必须显示描述的警报 View 。我不能在@IBAction 函数中调用相同的随机数来同步这个数字,以获得描述。如果有任何解决方案,我很乐意使用它!非常感谢。 这是一个代码:
func popCardViewWithFrame(_ frame : CGRect) -> UIView? {
let randomIndex = Int(arc4random_uniform(36) + 1)
let imageView = UIImageView()
imageView.image = UIImage(named: people[randomIndex].image
print(randomIndex)
return imageView
}
这里是@IBAction func,我想在其中使用相同的生成随机数:
@IBAction func ButtonAction(_ sender: UIButton) {
let appearance = SCLAlertView.SCLAppearance(
kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!,
kTextFont: UIFont(name: "HelveticaNeue", size: 14)!,
kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!,
showCloseButton: false
)
let alert = SCLAlertView(appearance: appearance)
let subview: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 70))
let x = (subview.frame.width - 180) / 2
let textfield1 = UILabel(frame: CGRect(x: x, y: 10, width: 180, height: 25))
textfield1.text = people[randomIndex].text
print(randomIndex)
}
最佳答案
首先您需要创建一个具有函数的变量
。它应该是这样的:
var randomNumberCompletion: ((Int) -> ())?
然后,在声明了随机数之后,像这样使用这个完成 block :
func popCardViewWithFrame(_ frame : CGRect) -> UIView? {
let randomIndex = Int(arc4random_uniform(36) + 1)
randomNumberCompletion?(randomIndex)
let imageView = UIImageView()
imageView.image = UIImage(named: people[randomIndex].image
print(randomIndex)
return imageView
}
然后在 @IBAction func
中像这样调用这个完成 block :
@IBAction func ButtonAction(_ sender: UIButton) {
let appearance = SCLAlertView.SCLAppearance(
kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!,
kTextFont: UIFont(name: "HelveticaNeue", size: 14)!,
kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!,
showCloseButton: false
)
let alert = SCLAlertView(appearance: appearance)
let subview: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 70))
let x = (subview.frame.width - 180) / 2
let textfield1 = UILabel(frame: CGRect(x: x, y: 10, width: 180, height: 25))
randomNumberCompletion = { [unowned self] randomNumber in
self.textfield1.text = randomNumber
}
textfield1.text = people[randomIndex].text
print(randomIndex)
关于ios - 如何将单独函数中生成的随机数同步到另一个@IBAction func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42973586/