Segue VS didDeselectRowAtIndexPath

Segue VS didDeselectRowAtIndexPath

我正在使用 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 出现了。

现在的问题是:

  1. CellstableView 中不能超过 1 个故事板
  2. 需要导航栏在应用程序中滚动(这似乎需要Segue

有什么解决办法吗?

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

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

可能在您的情节提要中,segue 类型是 push,这就是您获得导航栏的原因。

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

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

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

您可以使用 .pushViewController 或简单地 performSegue 并确保您的 segue 类型是 push。我会选择 performSegue 并更改每个开关盒中的 identifier 名称。

并且您仍然可以在 prepareForSegue

中传递数据

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