如何在两个屏幕之间传递数据,而两者都是Swift中NavigationController中的元素?

时间:2018-03-21 09:42:00

标签: swift xcode uinavigationcontroller segue

我在UINavigation Controller下有一套故事板。其中一个屏幕包含一个表格视图,我需要将点击的行的数据发送到下一个屏幕。我知道这样做会要求我使用segue。但是,我如何获得Navigation BarNavigation Button

为了更好地理解,我上传了第一个屏幕的屏幕截图。单击详细信息按钮将将挑战对象发送到下一个屏幕。但是,我期待在下一个scree的顶部有相同的导航栏。知道如何实现这样的目标?

目前,如果我按下详细信息button,我会在终端获取该挑战的详细信息。

@IBAction func CAStartChallenge(_ sender: UIButton) {
           let tag = NSNumber(value: sender.tag) as! Int
           print("challenge name to be printed : \(challengeTableConent[tag].display()) ")
}

enter image description here

2 个答案:

答案 0 :(得分:1)

在故事板中,您想在视图控制器之间拖动一个segue,如下所示:

Storyboard segue dragging

对segue使用ShowPush (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
    }
}

然后,您可以在出现时使用其特定模型配置目标视图控制器。

答案 1 :(得分:1)

首先

使用segue通过屏幕传递数据很简单。请查看此答案

Pass data through segue

它将准确解释如何做到这一点

<强>第二

检查按钮上的错误我认为你的意思是&#34;细节&#34;

<强>第三

检查segue的类型,您可能没有使用push或show detail。同时选择详细信息视图并确保&#34;模拟指标 - &gt;顶栏&#34;设置为推断

一些打印帮助

这将确保导航栏来自先前的控制器

Navigation bar

这就是你的segue的外观,不要忘记为你的segue提供一个标识符

enter image description here