Swift - 如何实现默认视图控制器循环

Posted

技术标签:

【中文标题】Swift - 如何实现默认视图控制器循环【英文标题】:Swift - How to implement a defaultviewcontroller loop 【发布时间】:2017-02-14 01:53:50 【问题描述】:

我正在尝试创建 2 个不同的默认视图控制器,然后根据单元格中的内容调用它们并执行其指定的操作。您会在主情节提要中使用 xib 等创建视图控制器吗?

基本上,我有一个要解析的 xml 文件,然后创建表格视图,直到我到达该项目的最后一个(详细信息)页面。据我了解,最好多次使用同一个 tableviewcontroller,而不是为每个级别创建 1 个。我应该创建一个 segue 循环吗?

目前有一些检查可以确保我使用了正确的 segue。

你会从 segue 开始:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    let cell = tableView.cellForRow(at: indexPath as IndexPath)
    tableView.deselectRow(at: indexPath as IndexPath, animated: true)
    segueLocation = hNTUL[(indexPath as NSIndexPath).row].locationLevel
    segueTitle = hNTUL[(indexPath as NSIndexPath).row].locationTitle
    if segueLocation == "TableView" 
        performSegue(withIdentifier: "defaultDetailSeague", sender: cell)
        let destinationVC = DefaultDetailViewController()
        destinationVC.detailTitle = segueTitle
    
    if segueLocation == "DetailView" 
        performSegue(withIdentifier: "defaultTableSeague", sender: cell)
        let destinationVC = DefaultTableViewController()
        destinationVC.tableTitle = segueTitle
    

我也有可能试图以错误的方式解决这个问题。

我也一直在寻找项目示例,但没有找到任何可以引导我走向正确方向的示例。

想法?

【问题讨论】:

感谢您显示更多代码,但我在下面的回答仍然有效。您需要prepare(for:sender:) 的实现,而您没有。请仔细阅读我在回答中所说的话。 你说的是这个吗? override func prepare(for segue: UIStoryboardSegue, sender: Any?) if segue.identifier == "LevelTwo" if let indexPath = self.tableView.indexPathForSelectedRow let controller = segue.destination as! LevelTwoTableViewController let mCaty = mainCat[(indexPath as NSIndexPath).row] controller.selectedName = mCaty.mainCategoriesTitle 是的,就是这样,尽管我认为您对self.tableView.indexPathForSelectedRow 的测试不会像您预期的那样工作(我可能错了)。 您真的应该阅读有关如何使用 segue 传递数据的教程...我不知道您为什么要这样写 您是否尝试动态生成 2 个具有相同 UI 和功能但内容不同的不同表格视图?如果是这样,只需通过 segue 将 bool 值传递给下一个 ViewController 并从适当的数据源构建表。 【参考方案1】:

如果你调用performSegue,你必须创建一个destinationVC; segue 为您创建它。要配置目标视图控制器,实现prepare(for:sender:) 并获取segue 的destination,将其转换为DefaultDetailViewController。请务必先检查这是否正确!

【讨论】:

我只能评论你展示的代码。如图,是错的,我的回答告诉你原因。

以上是关于Swift - 如何实现默认视图控制器循环的主要内容,如果未能解决你的问题,请参考以下文章

iOS Swift:如何实现类似用户界面的堆叠卡片?

如何使用 Swift 协议功能,如 Android 接口监听器实现?

如何从 Web 视图打开 Safari 视图控制器(swift)

如何实现这样的表格视图?或视图控制器或uialert?迅速

如何从url数组循环下载swift4中的pdf

如何在没有 Storyboard 的情况下推送新视图 Swift