无法从另一个 tableview 加载另一个 tableView

Posted

技术标签:

【中文标题】无法从另一个 tableview 加载另一个 tableView【英文标题】:Not able to load another tableView from another tableview 【发布时间】:2016-04-05 06:35:18 【问题描述】:

我设计了一个基本上有一个 tableview 有一个 rootView 的应用程序,然后打算根据在根视图控制器上单击的行来加载三个控制器(2 个 tableview 和 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”会打印在日志中。! 谁能指导我应该做什么?提前谢谢你..

【问题讨论】:

【参考方案1】:

使用 performSegueWithIdentifier:prepareForSegue 在执行 segue 之前执行,而不是 prepareForSegue,它用于设置要呈现的视图控制器。

【讨论】:

当我尝试这样做时,应用程序崩溃并出现错误,即它没有名为“-theseguename-”的segues,尽管我正确命名了segues ..在我再次交叉检查名称之前,是还有什么可能会产生这个错误吗? @ManeeshSharma 你在哪里命名segue?你是从视图控制器还是从表格视图单元拖动segue? 在 Stortyboard 的属性检查器中将其命名为 .. 并将其从视图控制器中拖动,而不是从表格视图单元格中拖动。 我有必要push segue什么的吗??或者我有没有可能不做一些可能很重要的事情? 阅读this,尝试使用其他模拟器重新运行【参考方案2】:

use 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)
  

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

【讨论】:

sahil ,当我尝试这样做时,应用程序崩溃并出现错误,即它没有名为“-theseguename-”的segues,尽管我正确命名了segues ..在我再次交叉检查名称之前,还有什么可能会产生这个错误吗? 故事板中的名称以及 didSelectRowAtIndex 方法中的名称相同。 你需要通过拖拽来继续。此链接将清除您的一切。 developer.apple.com/library/ios/featuredarticles/… 我拖拽并连接了一个当前的模态segue,在属性检查器中也正确提到了类名,清理了应用程序,然后执行,错误仍然存​​在 您需要点击 segue 对象,然后在属性检查器中添加标识符。

以上是关于无法从另一个 tableview 加载另一个 tableView的主要内容,如果未能解决你的问题,请参考以下文章

从另一个类重新加载 iPhone 上的 TableView

从另一个视图重新加载表视图

如何快速从另一个视图控制器重新加载表格视图

从另一个视图控制器添加单元格时 UITableViewCell 的内容不可见

Swift - 从另一个 ViewController 在 TableView 中插入项目

从另一个视图中选择 tableview 的行