两个segue从一个视图控制器传递相同的数据

时间:2016-09-22 19:12:58

标签: ios swift segue

我需要帮助了解使用segues的导航,并且无法在此处或Apple文档中找到合适的答案。

我正在建立一个冥想音频播放器。

我有一个主要的'ViewController',它显示了一个不同冥想的表格。

我有一个'SecondViewController'播放冥想的音频文件。

我有一些免费的和一些付费的。

我正在使用NSUserDefaults来存储字典,其中包含有关是否已购买冥想的信息。

如果用户点击主“ViewController”中的表格单元格,则应检查是否已购买。

如果购买我想要显示'SecondViewController',我想传递两个变量。 如果没有购买,我想要显示'PurchaseViewController',我还需要传递相同的两个变量。

以下是我正在使用的代码:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    var index = tableView.indexPathForSelectedRow?.row

    if pDictionary[purchasedArray[index!]]=="Purchased"||pDictionary[purchasedArray[index!]]=="Included"{
        let medSegueIdentifier = "sendDataSegue"
            if segue.identifier == medSegueIdentifier {
                index = tableView.indexPathForSelectedRow?.row}
        let destination = segue.destinationViewController as? SecondViewController
        destination!.medName = names[index!]
        destination!.purchased = true

    } else if pDictionary[purchasedArray[index!]]=="NotPurchased"{
        let medSegueIdentifier = "purchaseSegueIdentifier"
            if segue.identifier == medSegueIdentifier {                  
                index = tableView.indexPathForSelectedRow?.row}
        let destination = segue.destinationViewController as? PurchaseViewController
        destination!.medName = names[index!]
        destination!.purchased = false
    }

if语句的第一个分支(如果购买)工作正常,但第二个(如果没有购买)给出错误“在解开Optional值时意外发现nil”。

destination!.medName显示为nil,但仅显示在第二个分支中。这是我无法理解的部分。

这是a screenshot of my storyboard

1 个答案:

答案 0 :(得分:0)

destination成为nil的唯一方法是演员无效。所以我认为segue.destinationViewController不是PurchaseViewController

的实例

要仔细检查打开故事板,请选择您的viewcontroller并打开属性检查器。检查班级名称。

enter image description here