Use*_*ser 1 uitableview ios segue swift
我正在尝试将数据传递UITableview给另一个UITableview,当我按下时我成功传递数据cell但是当我按下导航栏的后退按钮时我无法传回数据; 我已经尝试过全局变量来解决这个问题,但由于我将这些变量的日期存储在数据库中,这给我带来了很多问题,因为它强制执行所有存储的提醒以保存相同的数据,我可以做一些技巧解决这个问题,但我们都知道全局变量是不好的做法而且OOP都不确认MVC,问题是如何使用Prepare for segue函数传回数据; 请注意,表视图是静态的而不是动态的.
如果你问的是我试图传递的数据是星期几,例如选择星期五和星期六时它会将真值发送回前一个视图,如果取消选择星期五和星期六,则会将错误值发送回上一个视图
那我怎么解决这个问题呢?
提前致谢
你需要做四件事:
您应该有自定义协议,例如:
public protocol DataBackDelegate: class {
func savePreferences (preferencesRestaurantsArray : [Bool], preferencesCusinesArray : [Bool])
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我认为你想要发回两个数组,但你可以编辑它以发送你想要的任何数据和数据类型.
您的第一个视图控制器(或表视图控制器,因为表视图控制器只是视图控制器的子类)必须符合您的自定义协议,例如:
class MainTableViewController: UITableViewController, DataBackDelegate
Run Code Online (Sandbox Code Playgroud)
在第二个视图控制器中,您需要为该协议提供变量,例如:
weak var delegate: DataBackDelegate?
Run Code Online (Sandbox Code Playgroud)
然后你抓住后面的动作,在里面你调用你的自定义协议功能,例如:
self.delegate?.savePreferences(Preferences2ViewController.preferencesRestaurantsArray, preferencesCusinesArray: Preferences2ViewController.preferencesCusinesArray)
Run Code Online (Sandbox Code Playgroud)
在第一个主控制器中,在触发第二个视图控制器的segue中,您应该将删除设置为self,例如:
destination.dataBackDelegate = self
Run Code Online (Sandbox Code Playgroud)
其中destination是第二个视图控制器
| 归档时间: |
|
| 查看次数: |
2185 次 |
| 最近记录: |