回到导航控制器

时间:2018-03-10 20:58:43

标签: ios swift uinavigationcontroller storyboard

我是XCode / Swift的新手,并尝试使用我的第一个Quizz应用程序:)

我已经阅读了许多面对我所面临问题的人的线索,但我无法与我的案例平行。有谁知道我可以让这个工作吗?

此处(详情请参见屏幕截图)

screenshot 1

1)首先是Tab栏。我正在处理的故事板从第一个视图开始

2)然后是一个导航栏:

  • 在第1页,我可以选择1个主题(segue:show)
  • 在第2页,我可以选择1个quizz(segue:show detail)
  • 在第3页,我播放quizz - 在这里,我只需单击结束按钮,代码不在此示例中(segue:show)
  • 在第4页,我得到了我的结果,我想按"返回"回到第1页。

然而,如果我从第4页到第1页,则导航控制器"消失"。

screenshot 2

==>如何在不丢失导航控制器的情况下正确地回到第一页?

提前感谢您的支持,

此致 玛蒂尔德

2 个答案:

答案 0 :(得分:1)

通过IBAction将“后退”按钮连接到第4个视图控制器内的方法,然后使用导航控制器popToViewController方法。例如:

@IBAction func backButtonTapped(_ button: UIButton) {
    if let firstViewController = self.navigationController?.viewControllers.first {
        self.navigationController?.popToViewController(firstViewController, animated: true)
    } 
}

答案 1 :(得分:0)

感谢您的回答。这听起来很简单,但是当我运行这段代码时,点击后退按钮时没有任何反应。

不确定出了什么问题。当我找到它时,我会告诉你...

这是我的代码中的样子。我的第一个VC被称为“FirstViewController”

import UIKit

class endQuizA1ViewController: UIViewController {

@IBAction func back(_ sender: UIButton)
{
    if let FirstViewController = self.navigationController?.viewControllers.first {
        self.navigationController?.popToViewController(FirstViewController, animated: true)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

}