ios - Swift:使用委托将数据发送到另一个视图控制器
问题描述
如何使用委托将数据发送到另一个视图控制器,然后在集合视图中显示?我的问题是使用委托移动数组。
下面是我正在做的一个例子。
当我在 ThirdViewController 中使用 usersList 时,我收到一条错误消息,提示“在隐式展开可选值时意外发现 nil”
protocol ExampleDelegate {
func delegateFunction(usersArray: Array<User>)
}
class ViewController: UIViewController {
private var model: Users = ViewController.createAccount()
var exampleDelegate: ExampleDelegate?
@IBAction func ShowUsers(_ sender: UIButton) {
let ShowUsersVC = storyboard?.instantiateViewController(identifier: "ThirdViewController") as! ThirdViewController
var userList: Array<User> = model.listOfUsers
exampleDelegate?.delegateFunction(usersArray: userList )
present(ShowUsersVC, animated: true)
}
}
class ThirdViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
var usersList: Array<User>!
override func viewDidLoad() {
super.viewDidLoad()
let GetUsersVC = storyboard?.instantiateViewController(identifier: "ViewController") as! ViewController
GetUsersVC.showMomentsDelegate = self
collectionView.dataSource = self
collectionView.delegate = self
}
}
extension ThirdViewController: ExampleDelegate {
func delegateFunction(usersArray: Array<User>)
usersList = usersArray
}
解决方案
在这种情况下,您不需要委托。您正在转发数据,所以只需这样做:
class ViewController: UIViewController {
private var model: Users = ViewController.createAccount()
var exampleDelegate: ExampleDelegate?
@IBAction func showUsers(_ sender: UIButton) {
let showUsersVC = storyboard?.instantiateViewController(identifier: "ThirdViewController") as! ThirdViewController
var userList: Array<User> = model.listOfUsers
showUsersVC.usersList = userList /// pass the data!
present(showUsersVC, animated: true)
}
}
同样在 Swift 中,您应该使用小写的对象userList
,如showUsers
.
推荐阅读
- sql - 从列中选择子字符串,但每条记录都有不同的模式
- td-engine - 如何在 tdengine 中插入超出 keep 限制的时间戳
- php - 如何在使用 HTMLPurifier 去除脚本标签时允许所有 CSS?
- python - 如何使用现有模型和迁移恢复 Django 项目的转储数据库备份?
- linux - 裸盒中的 ubiformat 给出超时
- javascript - 试图消除延迟
- python - 如何在 django 中打印前 100 个字符?
- mysql - 在 MySQL 的特定列中为 json 中的键选择值
- android - 在firebase中每秒更新不同节点的多个值
- python - Discord Bot:我想从 zenquotes.io 发送随机报价,但代码没有产生任何内容,也没有出现错误