ios - Swift popViewController 发送数据

标签 ios swift uinavigationcontroller

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/

相关文章:

iphone - 删除 View 并弹出后将 nil 分配给 UIViewController 时崩溃

ios - 使用 Core Animation 的 Glitch-style 动画

ios - 为什么核心显卡线条不对齐?

ios - Swift - 确定 Array1 是否至少包含一个来自 Array2 的对象

ios - 自动增加/减少 UITableViewCell 中的 UILabelView 高度?

ios - 为什么在 MVC 中将导航规则与代码分开

html - 在 iOS 上的 Quicktime 中启动嵌入的 YouTube 视频

swift - 按下 'more' 按钮时如何设置标签栏 Controller 内的导航栏颜色和单元格大小?

ios - 当 segue 甚至 NavigationController Swift 时,TabBar 消失

ios - 将 UINavigationView 的大小限制为其当前呈现的 Controller 的大小?