ios - 如何将单独函数中生成的随机数同步到另一个@IBAction func

标签 ios json swift function random

我有一个包含 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/

相关文章:

ios - 在 SWIFT 4.1 中从 Firebase 检索数据时出现 'subscript' 的不明确使用和无法调用非函数类型 'AnyObject' 的值错误

ios - 未设置触发器 $XCS_PRODUCT 后持续集成 Xcode Server

iphone - 引用计数的对象在释放后使用

arrays - 如何从 SWIFT 中的 JSON 数组获取数据?

json - 获取类型 'List<dynamic>' 不是 JSON 中类型 'List<...>' 错误的子类型

ios - 如何使用 Swift 在运行时扩展 UIScrollView?

ios - 在谷歌地图 View 上放置按钮

iphone - 巨大的库无法在 iPhone 中加载

ios - iPhone 应用程序未连接到 iTunes 商店

javascript - $.getJSON 在 IE10 中不工作,