Segue VS didDeselectRowAtIndexPath

时间:2015-01-11 08:49:20

标签: ios swift ios8 segue ios8.1

我正在使用didDeselectRowAtIndexPath来浏览不同的故事板,如:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let story = ["News","Video","Twitter","Request Info","More"]

    let vc = self.storyboard?.instantiateViewControllerWithIdentifier(story[indexPath.row]) as NewsFeedTableViewController
    self.presentViewController(vc, animated: true, completion: nil)

}

但是,当我使用此功能时,Navigation Bar不显示。但是,当我使用segue时,Navigation Bar显示出来。

现在的问题是:

    {li} Cells tableView无法超过1个故事板
  1. 需要导航栏在应用程序中滚动(似乎需要Segue
  2. 通过这个解决方案吗?

3 个答案:

答案 0 :(得分:2)

您正在使用presentViewController,这就是您没有获得NavigationBar的原因,它以模态方式呈现视图。而不是像pushViewController那样:

self.navigationController?.pushViewController(vc, animated: true)

可能在您的故事板中,segue类型为push,这就是您获取导航栏的原因。

您可能对以下内容感兴趣:

  1. presentViewController:animated:completion:
  2. ViewController Programming Guide for iOS

答案 1 :(得分:0)

您正在展示下一个视图控制器,而不是推动它。 (至少在案例1中)所以你有一个模态链接而没有导航控制器!

您可以使用.pushViewController或只使用performSegue,并确保您的segue类型为push。我会选择performSegue并更改每个switchcase中的identifier名称。

您仍然可以在prepareForSegue

中传递数据

答案 2 :(得分:-1)

最好在didSelectRow中调用performSegue。并在perpareSegue方法中执行操作。