不同的 segues 去同一个 ui 视图而不是不同的视图

Posted

技术标签:

【中文标题】不同的 segues 去同一个 ui 视图而不是不同的视图【英文标题】:Different segues going to the same ui view instead of different views 【发布时间】:2019-08-30 17:34:12 【问题描述】:

我有一个带有两个按钮的视图,每个按钮都应该执行不同的 segue 并转到不同的视图,但它们都转到相同的视图

我尝试删除并创建新的转场

这是带有两个按钮的视图控制器

import UIKit

class DSViewController: UIViewController 

    var finalTol = ""


    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        print(finalTol)
        view.layer.cornerRadius=30


    


   @IBAction func diseaseDone(_ sender: Any) 
        performSegue(withIdentifier: "disease", sender: self)
    


    @IBAction func symptomsDone(_ sender: Any) 
        performSegue(withIdentifier: "symptom", sender: self)
    


    override func viewWillAppear(_ animated: Bool) 

        navigationController?.navigationBar.layer.cornerRadius = 30

        navigationController?.navigationBar.barTintColor = UIColor.white




        navigationController?.navigationBar.clipsToBounds = true
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
        switch (segue.identifier) 
        case "disease":
            let vc = segue.destination as! DiseaseViewController
            vc.finalTol=self.finalTol
        case "symptom":
            let vc = segue.destination as! SymptomViewController
            vc.finalTol = self.finalTol
        default:
            print(finalTol)
        
    

我预计疾病会出现在 diseaseViewController 中,症状会出现在 SymptomViewController 中,但它们都会出现在症状中

【问题讨论】:

【参考方案1】:

我认为这里没有足够的信息来确定问题。

您是否在情节提要中检查了每个按钮都连接到正确的 IBAction 并且仅连接到正确的 IBAction?选择您的按钮并检查连接选项卡以确保是这种情况。您可能已将它们都设置为“syptomsDone”,或者您可能已将它们设置为故事板中的 segue 而不是调用您的 IBAction。

还要检查您的自定义 segue 标识符以确定。

【讨论】:

您能验证一下 IBAction 是否被调用,其中包含一个简单的打印语句?查看视图层次结构中的情节提要并查看底部以查看转场。那里有你不期望的转场吗?

以上是关于不同的 segues 去同一个 ui 视图而不是不同的视图的主要内容,如果未能解决你的问题,请参考以下文章

直接在不同的细节视图控制器之间进行segue

使用 Storyboard 推动 segue

遵循 UI Segue 会破坏我的视图框架

将数据从一个视图控制器传递到下一个视图控制器,而无需在 swift 中进行 segue

在视图控制器之间传递数据而不使用 segues [重复]

UIScrollView 在从不同的视图控制器 segu 时具有不同的 y 位置