Swift,从弹出窗口将数据传回视图控制器

7

我已经在弹出控制器中对原始数组进行了排序。现在我想将该数组发送回原始视图控制器,以供表格视图和地图视图使用。

以下是我的代码


我已经在弹出控制器中对原始数组进行了排序。现在我想将该数组发送回原始视图控制器,以供表格视图和地图视图使用。
 If propertyNameSrt == false
    {
        if ascSorting == false
        {
            properties.sort(sorterForbuildingAsc)
        }
        else
        {
            properties.sort(sorterForbuildingDesc)
        }


    }

我的数组中包含自定义对象的属性。我该如何将它传递给我的原始视图控制器呢? 谢谢你的帮助, Dhaval。

1个回答

16
您可以使用委托(协议)方法将数据发送回前一个视图控制器。
在当前的视图控制器中:
protocol MyProtocol: class
{
    func sendArrayToPreviousVC(myArray:[AnyObject])
}
在你的类中创建一个变量。
weak var mDelegate:MyProtocol?
现在,在弹出视图控制器时调用协议方法,并使用您的“properties”数组作为参数。
mDelegate?.sendArrayToPreviousVC(properties)

在之前的视图控制器中:

当您推出当前的视图控制器时,请将mDelegate属性设置为self。

currentVC.mDelegate = self
//PUSH VC

现在在您之前的视图控制器中实现协议方法。

func sendArrayToPreviousVC(myArray:[AnyObject]) {
    //DO YOUR THING
}

有一个小问题..var mDelegate:MyProtocol? (会在弹出视图控制器中定义吗?) 还是在之前的控制器中? - dhaval shah
在 popViewController 中。 - Thijs
哦,我有点搞砸了...我创建了一个 UIViewController 而不是 UIPopoverController。 - dhaval shah
@Thijs 感谢您提供的优美代码...如果我在弹出窗口中使用了视图控制器,那么会产生问题吗? - dhaval shah
1
之前的VC应该实现 MyProtocol PreviousVC: UIViewController, MyProtocol - Stranger B.
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接