gpt4 book ai didi

ios - 单击后退按钮时如何传递数据?

转载 作者:搜寻专家 更新时间:2023-11-01 05:57:14 24 4
gpt4 key购买 nike

我正在尝试将数据从 UITableview 传递到另一个 UITableview,当我按下 cell 时我成功传递了数据,但我不能' 当我按下导航栏的后退按钮时传回数据;我已经尝试使用全局变量来解决这个问题,但是由于我将这些变量的日期存储在数据库中,这给我带来了很多问题,因为它强制所有存储的提醒保存相同的数据,我可以做一些技巧来解决这个问题但我们都知道全局变量是不好的做法并且不确认 OOP 也不 MVC,问题是如何使用 传回数据准备 segue 函数;请注意, TableView 是静态的而不是动态的。

如果您问我要传递的数据是星期几,例如选择星期五和星期六时,它会将真值发送回上一个 View ,如果取消选择星期五和星期六,则将假值发送回上一个 View

那么我该如何解决这个问题呢?

提前致谢

最佳答案

你需要做四件事:

首先

您应该有一个自定义协议(protocol),例如:

public protocol DataBackDelegate: class {
func savePreferences (preferencesRestaurantsArray : [Bool], preferencesCusinesArray : [Bool])
}

如您所见,我假设您想发回两个数组,但您可以对其进行编辑以发送您想要的任何数据和数据类型。

第二

您的第一个 View Controller (或 TableView Controller ,因为 TableView Controller 只是 View Controller 的子类)必须符合您的自定义协议(protocol),例如:

class MainTableViewController: UITableViewController, DataBackDelegate  

第三个

在您的第二个 View Controller 中,您需要为该协议(protocol)设置一个变量,例如:

 weak var delegate: DataBackDelegate?

然后您捕获back 操作并在其中调用您的自定义协议(protocol)函数,例如:

self.delegate?.savePreferences(Preferences2ViewController.preferencesRestaurantsArray, preferencesCusinesArray: Preferences2ViewController.preferencesCusinesArray)

第四个

在你的第一个主 Controller 中,在触发第二个 View Controller 的 segue 中,你应该将 deleage 设置为 self,例如:

destination.dataBackDelegate = self

其中destination是第二个view controller

关于ios - 单击后退按钮时如何传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com