You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在返回ViewController时重新触发randomElement()获取新提示

解决方法

问题出在viewDidLoad方法仅在ViewController首次加载时执行一次,当你从其他页面返回时,该方法不会再次触发,因此提示内容不会更新。你需要将生成随机提示的逻辑移至viewWillAppear(_:)或viewDidAppear(_:)方法中,这两个方法会在ViewController即将显示/已经显示时被调用,包含从其他页面返回的场景。

修改后的代码:

import UIKit

class MainMenuViewController: UIViewController {
    
    @IBOutlet weak var randomtipLabel: UILabel!
    // 将tips数组设为类属性,避免重复创建实例
    private let tips = ["tip 1", "tip 2", "tip 3"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 首次加载时初始化提示
        updateRandomTip()
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // 每次页面即将显示时更新提示
        updateRandomTip()
    }
    
    private func updateRandomTip() {
        guard let randomTip = tips.randomElement() else {
            // 处理数组为空的边界情况,避免崩溃
            randomtipLabel.text = "暂无提示"
            return
        }
        randomtipLabel.text = randomTip
        randomtipLabel.sizeToFit()
    }
}

关键说明:

  • viewWillAppear(_:):在ViewController的视图即将出现在屏幕上时触发,适合在此处更新UI内容,确保每次返回主页面都能刷新提示。
  • 将tips数组定义为类的私有属性,避免每次调用方法时重复创建数组实例,提升代码效率。
  • 使用guard let安全解包randomElement()的返回值,防止数组为空时触发崩溃(即使当前示例数组有内容,养成安全处理可选值的习惯也很重要)。

内容的提问来源于stack exchange,提问作者Wasko Ltd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:04:50