如何解决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
之类的函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。