class SelectTag: UIViewController {
var selectedTag = [0,1,2]
@IBAction func endSelectTag(_ sender: Any) {
self.navigationController?.popViewController(animated: true)
}
}
我可以在运行 popViewController 之前添加数据吗?
我试过了
(self.parent as! MyPage).seleteTag = seletedTag
Could not cast value of type UINavigationController to MyPage
最佳答案
您似乎正在尝试将数据从 SelectTag
传递到 MyPage
。
实现此目的的一种方法是使用委托(delegate)模式。
创建一个SelectTagDelegate
:
protocol SelectTagDelegate : class {
func didSelectTag(tags: [Int])
}
在SelectTag
中添加此属性:
weak var delegate: SelectTagDelegate?
然后将 endSelectTag
更改为:
@IBAction func endSelectTag(_ sender: Any) {
delegate?.didSelectTag(tags: selectedTag)
self.navigationController?.popViewController(animated: true)
}
通过实现 didSelectTag
使 MyPage
符合 SelectTagDelegate
:
extension MyPage: SelectTagDelegate {
func didSelectTag(tags: [Int]) {
seleteTag = tags
}
}
现在,当您呈现 SelectTag
时,将 self
设置为委托(delegate)。
let selectTag = // get VC from storyboard or use segue.destination depending on your situation
selectTag.delegate = self
// present the VC
关于ios - Swift popViewController 发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51439975/