在模式 segue 完成后更新数据


如何在

模式 segue 被关闭后更新数据?因为我认为最好的方法是使用通知,但我不知道如何在模式 segue 关闭后在主视图中设置通知。

例如,我有"登录"模式视图

,当用户单击"完成"模式视图时,主视图从NSUserDefaults读取新数据并显示新数据。

@IBAction func doneClicked(sender: AnyObject) {
    settings.synchronize()
    self.dismissViewControllerAnimated(true, completion: nil)
}

如果您使用的是情节提要,请使用展开 segue。然后,您只需使用segue.sourceViewController并从(现已关闭)模式视图控制器中获取所需的数据。在您的情况下,您甚至不需要来自模态视图控制器的任何数据,因此只需将您想要的任何内容放入 unlooseSegue IBAction 方法中即可。

指南:http://spin.atomicobject.com/2014/10/25/ios-unwind-segues/

使用您在self.dismissViewControllerAnimated中设置为 nil 的完成处理程序

代替 nil,放入一个完成处理程序,其中包含要在完成消除后运行的代码。

另一种选择,

也可能是更好的选择,是不要从控制器本身中分离出来,而是从提供它的控制器中关闭控制器。

向控制器添加一个名为 onDone 的块属性,该属性可由执行演示的控制器注册。在您的按钮操作中,只需调用此onDone块。提供控制器的控制器将收到通知,可以调用dismissViewController并使用完成来整理内容。

这是一种更好的方法,因为它迎合了控制器,按钮以多种方式升起:按下、模态或在 iPad 上的弹出框中。让演示者也执行关闭可以更轻松地处理这些不同的选项,因为演示者知道它如何呈现控制器。

当视图从屏幕上消失时触发通知


-(void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"loginNotification" object:nil];
}
Or

[self dismissViewControllerAnimated:YES completion:^{

[[NSNotificationCenter defaultCenter] postNotificationName:@"loginNotification" object:nil];

}];

最新更新