我在保存UIActivityIndicator
时显示PFObject
(使用Parse.com)
- (void) saveNewMessage {
// Show Activity Indicator
UIActivityIndicatorView *activityView=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityView.center=self.view.center;
[activityView startAnimating];
// Create Message
...
// Save Message
[message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
// complete activity indicator
[activityView stop];
}
}];
}
我的问题:如果用户在我们仍然保存的情况下离开视图,然后返回到视图并且保存尚未完成,该怎么办? UIActivityIndicatorView
将会消失。如何确定解析操作是否已完成?
答案 0 :(得分:0)
这取决于你如何实现“离开视图”和“回到视图”
如果您使用相同的viewcontroller(例如,使用导航视图控制器推送弹出vc),UIActivityIndicatorView有一个名为
的方法- (BOOL)isAnimating
您可以查看UIActivityIndicatorView的状态
否则(即你分配并呈现一个新的viewcontroller)你需要使用全局机制,nsnotificationcenter可能适合你的需要,或者你可以在AppDelegate中设置一个变量,或者你可以读/写一个本地文件。
答案 1 :(得分:0)
您可以在视图控制器中存储BOOL
,告知保存操作已完成,然后在完成块中将其与[activityView stop];
一起更新。
然后,要处理用户离开屏幕并稍后返回的情况,请在- (void)viewWillAppear
中添加一个检查,以便在保存操作完成时隐藏UIActivityIndicatorView
(例如,如果您的{{ 1}}设置为BOOL
)。
答案 2 :(得分:0)
PFObject实际上有一个内置的布尔值来告诉我们何时完成保存。您也可以同时禁用保存按钮,以防止获得多个保存请求。
[activityView startAnimating]
[yourobject saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error){
if (succeeded) {
[activityView stopAnimating];
}else{
[activityView stopAnimating];
}