【问题标题】:Perform action when segue is closedsegue 关闭时执行操作
【发布时间】:2018-01-02 12:07:06
【问题描述】:

我有一个 ViewController,我在其中调用 segue 到另一个 ViewController:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == blogSegueIdentifier {
            let destination = segue.destination as! Reply
            let path = tableView.indexPathForSelectedRow
            let cell = tableView.cellForRow(at: path!) as! QuestionsTabCell
            destination.blogName = String(cell.labelQues!.tag)
        }
    }

在打开的 segue (ViewController) 中有一个 UITextView 和一个 UINavigationBar 中的发送按钮。因此,用户输入 textView 并将其发送到服务器,点击按钮,在此打开的 segue (ViewController) 关闭并且用户返回到第一个 ViewController 之后。当用户关闭segue而不使用viewWillAppear时如何在第一个ViewController中调用方法?

【问题讨论】:

标签: ios swift uitableview segue


【解决方案1】:

你好@Mr Jo 你可以使用 unwind segue 来达到这个目的。

在你的第一个 viewController 中声明一个方法 Like :-

//MARK: - - Unwind Segue 从选择的类别中获取数据 @IBAction func unwindToAssignCatController(segue: UIStoryboardSegue) { //从selectcategory类中取回数据 如果 segue.identifier == "segueIdentifier"{ 让控制器 = segue.source 为!回复 // 从第二个 viewController 获取你的值并在第一个 viewController 中使用 }

之后你必须选择你的第二个 ViewController

1:右键Controller并拖动退出然后会出现下面的方法 2:选择它并为其分配一个标识符。 3:然后在具有相同标识符的第二个 viewController 中对您想要的那个动作执行 segue。

【讨论】:

    【解决方案2】:

    如果你有 NavigationController,试试:(Objective-C)

    FirstVC* firstVC = self.navigationController.viewControllers[self.navigationController.viewControllers.count
    - 2]
    

    导航堆栈中一系列 viewController 中的最后一个

    如果您在没有 NavigationController 的情况下打开第二个 viewController,您可以获得第一个 viewController 的实例,如下所示:

    FirstVC* firstVC = self.presentingViewController
    

    请注意,在转换完成后,呈现 VC 的实例将在此属性中可用,例如在 viewDidAppear

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多