迅速的三分之二没有传递数据

时间:2019-01-16 13:29:55

标签: swift segue uistoryboardsegue

点击按钮后,我试图通过数据将数据传递给另一个控制器。

这是我的代码:

@IBAction func agilityDogBtnPressed(_ sender: Any) {
    if let objs = controller.fetchedObjects, objs.count > 0 {
        let course = objs[0]
            self.performSegue(withIdentifier: "DogAgilitySegue", sender: course)
    }
}
@IBAction func baseEducationBtnPressed(_ sender: Any) {
    if let objs = controller.fetchedObjects, objs.count > 0 {
        let course = objs[1]
        self.performSegue(withIdentifier: "BaseEducationSegue", sender: course)
    }
}
@IBAction func puppyBtnPressed(_ sender: Any) {
    if let objs = controller.fetchedObjects, objs.count > 0 {
        let course = objs[2]
        self.performSegue(withIdentifier: "PuppyClassSegue", sender: course)
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "DogAgilitySegue" {
        if let destination = segue.destination as? ClassDetailsVC {
            if let course = sender as? Course {
                destination.course = course
            }
        }
    } else if segue.identifier == "PuppyClassSegue" {
        if let destination = segue.destination as? ClassDetailsVC {
            if let course = sender as? Course {
                destination.course = course
            }
        }
    } else if segue.identifier == "BaseEducationSegue" {
        if let destination = segue.destination as? ClassDetailsVC {
            if let course = sender as? Course {
                destination.course = course
            }
        }
    }

我的问题是前两个任务运行得很好。 第三个(PuppyClassSegue)没有传递数据。 它会打开页面,但是没有显示数据,基本上没有destination.course

有什么想法吗?

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:1)

看来课程是nil,也可以通过将所有按钮都钩到同一操作并分别为其设置标签0、1,2来实现此目的

@IBAction func agilityDogBtnPressed(_ sender: UIButton) {
    if let objs = controller.fetchedObjects, objs.count > 0 {
        let course = objs[sender.tag]
            self.performSegue(withIdentifier: "SegueFromCon", sender: course)
} 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
        if let destination = segue.destination as? ClassDetailsVC {
            if let course = sender as? Course {
                print("hit here ",course)
                destination.course = course
            }
        }
}

从当前vc到详细信息VC进行1次命名为SegueFromCon的搜索