segue 关闭时执行操作
Posted
技术标签:
【中文标题】segue 关闭时执行操作【英文标题】:Perform action when segue is closed 【发布时间】: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中调用方法?
【问题讨论】:
使用展开转场。 How to pass data from modal view controller back when dismissed的可能重复 @chengsam 请把它写成答案,非常感谢! 【参考方案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
中
【讨论】:
以上是关于segue 关闭时执行操作的主要内容,如果未能解决你的问题,请参考以下文章