【问题标题】:Not able to load another tableView from another tableview无法从另一个 tableview 加载另一个 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”会打印在日志中。!
谁能指导我应该做什么?提前谢谢你..

【问题讨论】:

    标签: ios swift uiviewcontroller segue


    【解决方案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 对象,然后在属性检查器中添加标识符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2011-06-19
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多