我需要帮助了解使用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
,但仅显示在第二个分支中。这是我无法理解的部分。