当两个屏幕都是 Swift 中 NavigationController 中的元素时,如何在两个屏幕之间传递数据?
How to pass data between two screens while both are elements in NavigationController in Swift?
我在UINavigation Controller
下有一套故事板。其中一个屏幕包含 table 视图,我需要将点击行的数据发送到下一个屏幕。我知道这样做需要我使用 segue。但是我如何获得 Navigation Bar
和 Navigation Button
为了更好地理解,我上传了我的第一个屏幕的屏幕截图。单击详细信息按钮会将挑战对象发送到下一个屏幕。但是,我期待在下一个屏幕的顶部有相同的导航栏。知道我怎样才能完成这样的 objective 吗?
目前,如果我按详细信息 button
,我将在终端中获取该挑战的详细信息。
@IBAction func CAStartChallenge(_ sender: UIButton) {
let tag = NSNumber(value: sender.tag) as! Int
print("challenge name to be printed : \(challengeTableConent[tag].display()) ")
}
在您的故事板中,您想在视图控制器之间拖动一个 segue,如下所示:
Storyboard segue dragging
使用 Show
或 Push (deprecated)
选项进行转场。给这个 segue 一个合适的标识符,比如 Details
.
然后在你的按钮功能中你可以添加这些:
@IBAction func CAStartChallenge(_ sender: UIButton) {
let tag = NSNumber(value: sender.tag) as! Int
performSegue(withIdentifier: "Details", sender: challengeTableConent[tag])
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Details",
let destination = segue.destination as? DestinationViewController,
let model = sender as? ChallengeTableContentType {
// pass through model to destination view controller
destination.model = model
}
}
然后您可以在目标视图控制器出现时使用其特定模型对其进行配置。
首先
使用 segues 通过屏幕传递数据很简单。只需检查这个答案
Pass data through segue
它将详细说明如何操作
第二
检查按钮上的错误我想你的意思是 "Details"
第三
检查segue的类型,你可能没有使用push或者show detail。另外 select 详细信息视图并确保 "Simulated Metrics -> Topbar" 设置为 inferred
一些印刷品可以提供帮助
这将确保导航栏来自以前的控制器
这就是你的 segue 应该看起来的样子,不要忘记给你的 segue 一个标识符
我在UINavigation Controller
下有一套故事板。其中一个屏幕包含 table 视图,我需要将点击行的数据发送到下一个屏幕。我知道这样做需要我使用 segue。但是我如何获得 Navigation Bar
和 Navigation Button
为了更好地理解,我上传了我的第一个屏幕的屏幕截图。单击详细信息按钮会将挑战对象发送到下一个屏幕。但是,我期待在下一个屏幕的顶部有相同的导航栏。知道我怎样才能完成这样的 objective 吗?
目前,如果我按详细信息 button
,我将在终端中获取该挑战的详细信息。
@IBAction func CAStartChallenge(_ sender: UIButton) {
let tag = NSNumber(value: sender.tag) as! Int
print("challenge name to be printed : \(challengeTableConent[tag].display()) ")
}
在您的故事板中,您想在视图控制器之间拖动一个 segue,如下所示:
Storyboard segue dragging
使用 Show
或 Push (deprecated)
选项进行转场。给这个 segue 一个合适的标识符,比如 Details
.
然后在你的按钮功能中你可以添加这些:
@IBAction func CAStartChallenge(_ sender: UIButton) {
let tag = NSNumber(value: sender.tag) as! Int
performSegue(withIdentifier: "Details", sender: challengeTableConent[tag])
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Details",
let destination = segue.destination as? DestinationViewController,
let model = sender as? ChallengeTableContentType {
// pass through model to destination view controller
destination.model = model
}
}
然后您可以在目标视图控制器出现时使用其特定模型对其进行配置。
首先
使用 segues 通过屏幕传递数据很简单。只需检查这个答案
Pass data through segue
它将详细说明如何操作
第二
检查按钮上的错误我想你的意思是 "Details"
第三
检查segue的类型,你可能没有使用push或者show detail。另外 select 详细信息视图并确保 "Simulated Metrics -> Topbar" 设置为 inferred
一些印刷品可以提供帮助
这将确保导航栏来自以前的控制器
这就是你的 segue 应该看起来的样子,不要忘记给你的 segue 一个标识符