智用指南
第二套高阶模板 · 更大气的阅读体验

iOS页面跳转传参的实用技巧

发布时间:2026-01-17 00:21:02 阅读:15 次

在使用iPhone开发应用时,页面之间传递数据是再常见不过的操作。比如你在一个购物App里选好了商品,点击“去结算”时,需要把商品的价格、名称和数量带到下一个页面。这时候,页面跳转传参就派上用场了。

通过UIStoryboardSegue传参

如果你用的是Storyboard,最常见的方法就是在segue中传值。在第一个页面中重写 prepare(for:sender:) 方法,判断目标控制器类型后直接赋值。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        let destinationViewController = segue.destination as? DetailViewController
        destinationViewController?.productName = "无线耳机"
        destinationViewController?.productPrice = 299
    }
}

这种方式适合从列表页跳转到详情页的场景,代码清晰,维护方便。

通过初始化方法手动传参

有时候你不想依赖Storyboard,可以用纯代码方式跳转。比如从当前控制器手动创建下一个页面的实例,把参数传过去。

let detailVC = DetailViewController()
detailVC.productName = "蓝牙音箱"
detailVC.productPrice = 599
navigationController?.pushViewController(detailVC, animated: true)

这种写法灵活,适合模块化较强的项目,也能避免segue标识符写错的问题。

使用闭包反向传值

跳转过去之后,如果用户在第二个页面做了修改,比如改了收货地址,怎么把新数据带回前一个页面?可以用闭包。

let editVC = EditAddressViewController()
editVC.onAddressSaved = { newAddress in
    self.deliveryAddressLabel.text = newAddress
}
present(editVC, animated: true)

在目标页面定义一个闭包属性,操作完成时调用它,就能实现数据回传,体验流畅自然。

利用UserDefaults临时存取

对于一些简单的状态信息,比如用户是否第一次进入页面,可以临时用UserDefaults存储。

UserDefaults.standard.set(true, forKey: "hasSeenTutorial")

下次启动时读取这个值,决定是否展示引导页。虽然不是严格的“跳转传参”,但在跨页面共享轻量数据时很实用。

注意内存和数据安全

传参时别把大对象或敏感信息直接塞进去。比如不要把整个用户密码明文传给下一个页面,尽量只传必要字段。同时留意循环引用,尤其是使用闭包时记得加 [weak self]