TableView 未从另一个 tableview 中的 didselectRowAtindexPath 加载

Posted

技术标签:

【中文标题】TableView 未从另一个 tableview 中的 didselectRowAtindexPath 加载【英文标题】:TableView Not loading from didselectRowAtindexPath in another tableview 【发布时间】:2016-04-04 08:25:17 【问题描述】:

我正在使用 swift 2.2 和 xcode 7.3 。当单击一行时,我试图从另一个表视图加载表视图。在

didSelectRowAtIndexPath

在第一个表视图中,我创建了另一个表视图类的实例并使用 pushViewController 调用它。但是表格视图没有被加载并且屏幕保持不变。我的代码是

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    NSLog("It did enter the didselectRowAtIndexPath")
    if (indexPath.section == 0)
        let enrolledView = DetailsViewController()
        navigationController?.pushViewController(enrolledView, animated: true)
    

    if (indexPath.section == 1)
        let appcatalog = AppCatalogViewController()
        navigationController?.pushViewController(appcatalog, animated: true)
    

    if (indexPath.section == 2)
        let support = supportViewController()
        navigationController?.pushViewController(support, animated: true)
    



注意:“它确实进入了 didselectRowAtIndexPath”被打印在日志中。所以如果有什么不正确的地方,请告诉我。

【问题讨论】:

你分配tableView的委托了吗? 你能告诉我们吗?你是如何创建注册视图、appcatalog、支持控制器的 还要确保你当前的 ViewController 是嵌入在导航控制器中的,因为你正在推送导航视图控制器 从这个意义上说?你能说清楚一点吗? 我没有使用故事板 为什么不使用故事板?他们是不错 【参考方案1】:

你能给我们更多的代码吗?

例如,您是如何将您的类嵌入到导航控制器中的?

因为如果没有出现,可能是因为 navigationController 为 nil

【讨论】:

【参考方案2】:

我认为你的代码中有两个错误。

第一个:

您尚未将控制器嵌入到 UINavigation 控制器中。

第二个:

在您可以移动到它之前,您没有启动您的视图控制器。首先为每个视图控制器分配一个故事板标识符。因此,将您的代码更改为:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
NSLog("It did enter the didselectRowAtIndexPath")
if (indexPath.section == 0)
    let enrolledView = self.storyboard?.instantiateViewControllerWithIdentifier("identifier of your DetailsViewController")
    navigationController?.pushViewController(enrolledView, animated: true)


if (indexPath.section == 1)
    let appcatalog = self.storyboard?.instantiateViewControllerWithIdentifier("identifier of your AppCatalogViewController")
    navigationController?.pushViewController(appcatalog, animated: true)


if (indexPath.section == 2)
    let support = self.storyboard?.instantiateViewControllerWithIdentifier("identifier of your supportViewController")
    navigationController?.pushViewController(support, animated: true)




【讨论】:

是的。我还没有嵌入它..并且像你说的那样更改代码也会解决这个问题吗? 我刚刚在上面看到您没有使用情节提要?你在用 XIB 的吗? 如果您使用的是 XIB,则将 nib 文件加载为 let registeredViewArray = NSBundle.mainBundle().loadNibNamed("myXib", owner: self, options: nil) let loggedView = loggedViewArray[0] navigationController ?.pushViewController(enrolledView, 动画: true) 我猜我没有使用 XIB .. 关键是,我已经创建了单独的表视图控制器,并且希望在单击另一个中的一行时加载一个。而且我不知道该怎么做。所以你能告诉我在不使用故事板时需要做的事情吗? 您是否以编程方式创建了 tableViewController??

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

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

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

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

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

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

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