无法以编程方式执行segue

时间:2015-02-25 02:02:36

标签: ios iphone swift segue

我正在尝试以编程方式执行segue"但它一直给我一个错误,说我的视图控制器没有这个id

的segue

这是我的故事板的一部分 my storyboard

这是我执行segue

的方法
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
    self.performSegueWithIdentifier("show recipe details" , sender: self)
}

这是执行segue方法

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if(segue.identifier == self.SEGUE_ID)
    {
        if((sender?.isKindOfClass(RecepieViewController)) != nil)
        {
            if(segue.destinationViewController.isKindOfClass(RecipeDetailsViewController))
            {
                print("seguee")
            }
        }
    }
}

出了什么问题?

这是我的storyboard xml文件 RecipeViewController

RecipeDetailsViewController

3 个答案:

答案 0 :(得分:0)

确保在"显示食谱详细信息"之后没有空白区域。在属性检查器中的标识符名称中(ig。:"显示配方详细信息")。

答案 1 :(得分:0)

几个问题:

  • 您使用的是正确的故事板文件吗?您的Infoboard列表中是否引用了storyboard文件?
  • 实际上是否允许名称中包含空格的标识符?
  • 在一个地方,您使用文字字符串"show recipe details",而在另一个功能中使用self.SEGUE_ID。为什么不在两个地方使用那个常数来避免混淆。

Swift nit:您可以更轻松地在Swift中执行isKindOfClass()代码,如下所示:

if let recipeViewController = sender as? RecepieViewController {
    if let recipeDetailsViewController = segue.destinationViewController as? recipeDetailsViewController {
        // Got the right view controllers
    }
}

答案 2 :(得分:0)

将故事板显示为源(xml格式),然后搜索“显示配方详细信息”。这将确认您期望的segue ID是否实际存在于代码中,或者是否存在创建问题的无关字符。