我正在SWIFT中开发IOS应用程序.

我想使用prepareForSegue函数将数据从一个视图发送到另一个视图.

但是,我的目标视图前面有一个导航控制器,所以它不起作用.如何在导航控制器中包含的VC上设置数据?

推荐答案

prepareForSegue中,访问目标导航控制器,然后访问其顶部:

let destinationNavigationController = segue.destination as! UINavigationController
let targetController = destinationNavigationController.topViewController

您可以从目标控制器访问其视图并传递数据.

在Swift和UIKit的旧版本(现已过时)中,代码略有不同:

let destinationNavigationController = segue.destinationViewController as UINavigationController
let targetController = destinationNavigationController.topViewController

Ios相关问答推荐

如何让我的 iOS 应用程序与 api 连接?

如何在 Swift 中从另一个视图控制器将元素附加到数组中

SignalR 永远不会在 iOS 上使用 Xamarin Forms 启动

如何将标准化坐标系中的点的位置转换为具有相对位置的常规坐标系?

将视图(例如 Text())不透明度设置为 0 或将背景设置为 Color.clear 会导致它不被绘制

如何从 scendelegate 打开我的标签栏控制器

Xcode 12.3:为 iOS 模拟器构建,但链接和嵌入式框架是为 iOS + iOS 模拟器构建的

SwiftUI 应用生命周期 iOS14 AppDelegate 代码放哪里?

Xcode 11 向后兼容性:“UIWindowScene 仅在 iOS 13 或更高版本中可用”

SwiftUI @Binding 初始化

为什么使用 SwiftUI 不显示导航标题?

在Flutter 应用程序中添加日期选择器的正确方法是什么?

Xcode 10b5 - 重复符号链接器错误,无法使用 Crashlytics 编译

滑动列表项以获取更多选项(Flutter)

UIView 中的 safeAreaInsets 在 iPhone X 上为 0

Xcode9 iOS11 应用程序版本中缺少 CFBundleIconName

“项目名称”是经过优化编译的 - 步进可能会表现得很奇怪;变量可能不可用

Xcode 8,iOS 10 -“为进程启动 WebFilter 日志(log)记录”

DispatchQueue.main.async 和 DispatchQueue.main.sync 之间的区别

Xcode 8.3 / Xcode 9.0 刷新配置文件设备