【问题标题】:segue from UITableViewCell to UIViewController is not working (prepare for segue not called)从 UITableViewCell 到 UIViewController 的转场不起作用(准备转场未调用)
【发布时间】:2019-05-30 14:26:39
【问题描述】:

我有一个案例,我需要从不同的选项卡栏控制器、导航控制器显示一个特定的 UIViewController,并通过按下表格视图单元格来执行操作,并知道它是从哪里显示的,并根据它运行一些代码。所以,我决定使用 Storyboard Segue 是个好主意,但甚至不能调用 prepare for segue 函数。所有使用 show segue 标识符都被命名,所以我不知道我在做什么。

但是如果有人想说任何其他方式来实现某种它,我想知道它。

https://i.imgur.com/ZSkta3p.jpg

我正在尝试通过 Storyboard References 来实现(只是因为它看起来更容易在 Storyboard 中导航),但是直接连接到 UIViewController 也不起作用。

我使用的是 Xcode 10.1 和 Swift 4.2.1

 import UIKit

 class TestsController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }


    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        print("I'm working!'")
        if segue.identifier == "Test1" {
            print("test 1")
        } else if segue.identifier == "Test2" {
            print("test 2")
        }
    }

}

【问题讨论】:

    标签: ios swift uitableview uiviewcontroller


    【解决方案1】:

    静态表只能在 UITableViewController 内,所以改变

    class TestsController: UITableViewController {
    

    然后在 IB 中分配此类,并删除 UITableView | 的任何实现UITableViewDelegate | UITableViewDataSource

    那么准备应该工作,看看这个Demo

    【讨论】:

    • 啊,明白了,segue 的准备应该在我们展示的 View 中,而不是我们想要展示的那个。好的,现在我必须为我的情况想出一些其他的解决方案。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2017-12-13
    • 1970-01-01
    • 2014-11-23
    相关资源
    最近更新 更多