无法从另一个tableview

时间:2016-04-05 06:35:18

标签: ios swift uiviewcontroller segue

我设计了一个基本上有一个tableview的应用程序有一个rootView,然后根据在根视图控制器上单击的行加载三个控制器(2个tableviews和1个视图控制器)。我已经从根视图控制器向所有三个视图添加了当前模态segue。但是观点没有被加载。我没有在视图之间传递任何数据。只加载视图。我尝试加载视图的代码是

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    NSLog("It did enter the didselectRowAtIndexPath")
    if (indexPath.section == 0){
        func prepareForSegue(segue : UIStoryboardSegue , sender : AnyObject?) {
                segue.destinationViewController as? DetailsViewController
               NSLog("Loading Details view controller")
            }
        }


    if (indexPath.section == 1){
        func prepareForSegue(segue : UIStoryboardSegue , sender : AnyObject?) {
            segue.destinationViewController as? AppCatalogViewController
            NSLog("Loading AppCatalog view controller")
        }

    }

    if (indexPath.section == 2){
        func prepareForSegue(segue : UIStoryboardSegue , sender : AnyObject?) {
            segue.destinationViewController as? supportViewController
            NSLog("Loading support view controller")
        }
}
   }

注意:"它确实输入了didSelectRowAtindexPath"打印在日志中。!
任何人都可以指导我应该做什么?提前谢谢..

2 个答案:

答案 0 :(得分:0)

使用performSegueWithIdentifier:而不是prepareForSegue,prepareForSegue在执行segue之前执行,并且用于显示视图控制器的某些设置。

答案 1 :(得分:0)

enter image description here使用performSegueWithIdentifier

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
NSLog("It did enter the didselectRowAtIndexPath")

  if (indexPath.section == 0){
    self.performSegueWithIdentifier("IdentifierName", sender: sender)
    } else if (indexPath.section == 1){
    self.performSegueWithIdentifier("IdentifierName", sender: sender)
  } else if (indexPath.section == 2){
    self.performSegueWithIdentifier("IdentifierName", sender: sender)
  }
}

在UIViewController类中定义prepareForSegue,此方法的默认实现什么都不做。并且它要求所有segues。 如果你愿意,你可以覆盖它。