2014-03-07 50 views
2

这是怎么了我的应用程序现在正在寻找:正在使用performSelector:afterDelay:排队或排序方法的最有效方法?

enter image description here

后,我在我的详细控制器鉴于7号的图像上面尽快执行数据库更新的保存按钮被点击详细被保存在数据库中。我回到了tableView编号5,并期望关联的行通过调用parse.com框架中的一个特殊方法来显示最新更新,该方法重新加载对象并刷新表视图,例如[自加载对象]。

我用一个展开SEGUE。在视图7中,我在界面构建器中的保存按钮和控制器窗口的退出符号之间建立了连接,然后在tableView number 5中创建了与此连接相对应的segue方法。

开卷赛格瑞方法:

-(IBAction)saveDetailsButtonTapped:(UIStoryboardSegue *)segue { 
    // alert goes here 
    [self performSelector:@selector(didTapRefreshButton:) withObject:self afterDelay:1.0]; 
} 

此方法清除表并加载对象的第一页:

- (IBAction)didTapRefreshButton:(id)sender { 
    [self loadObjects]; 
} 

时节省被点击视图号7的细节保存到数据库和用户回购表视图5号,然后上述方法运行1.0延迟后。我认为这很好,但不太对。我在手机上试了一下,有时延迟时间不够长,意味着刷新失败。

然后,我决定尝试使用UIAlertView委托方法来检测alertview的确定按钮何时被按下,并且大多数时间都可以正常工作,但随后我按下确定以便在返回视图时迅速关闭警报并且数据未被重新加载。

是否有刷新我的数据更好的扎实可靠的方法?

我需要某种方式知道数据库更新是成功的,然后才运行[self loadObjects]方法,也许会自动执行此操作。

我有两种方法可以检测对象何时会加载(例如,当按钮被点击时)以及何时加载。我已经在其中放置了一些微调代码,以便在加载过程中显示微调,并在完成后将其删除。

是不是有某种排队方法的方法,就像一个方法中的某些方法使它一样,直到另一个事件发生才有一件事发生?

如果是这样,我会非常感激一些见解和例子,因为我可以将应用程序标记为完整的,但即使我没有得到报酬,并且这是慈善工作,我仍然希望尽我所能。

谢谢你的时间。

亲切的问候

回答

2

我已经把一些微调代码在那里显示在加载正在发生一个微调,并把它拿走,一旦它完成。

你应该在这里做这样的事情。

我需要某种方式知道数据库更新是成功的,然后才运行[self loadObjects]方法,也许会自动执行。

因为您正在保存进行解析,所以它应该是解析SDK,告诉您保存何时完成。如果你保存在后台(你应该是这样),那么当你提供一个在保存完成时调用的回调块时,使用save方法。被调用的这个块是你的触发器,用于删除微调器和继续。

旁注: -

是的,有几种不同类型的队列,多数比使用performSelector:...好,但也有异步活动工作的其他方式,你应该看看指导异步活动。即我可以在完成这个过程后得到回复,而不是等待多久,并希望完成。

+0

这种解释的东西很适合我。我做了一些谷歌上搜索看完后,连同这个传来:https://parse.com/questions/customize-something-went-wrong-error 我要去尝试,并且将报告,但它看起来酷似我想要的是。我可以用块保存背景。现在我只是保存在后台。 – LondonGuy

+0

完美工作。在块的背景下保存是答案。我所要做的只是更新我的代码并在块内添加一些if语句。 – LondonGuy