在我的iPhone应用程序中,如何创建一个UIAlert(或其他指示器),向用户突出显示数据正在加载,以便:
我的粗略流程将是:
需要找到一种方法来执行此操作,以便使用的“加载”指示符实际上立即显示在当前视图中...
答案 0 :(得分:1)
我个人想要的方法是首先在头文件中分配一个警告:
UIAlertView *alert;
然后在tableView:didSelectRowAtIndexPath:
方法中创建并显示提醒。
alert = [[UIAlertView alloc] init....];
[alert show];
// start the loading process for your data to push to the next view
然后要关闭视图,只需在viewWillDisappear:animated:
方法中执行此操作,然后执行以下调用:
[alert dismissWithClickedButtonIndex:0 animated:YES];
这应确保在显示下一个视图之前解除警报。我希望这有帮助。如果您有任何疑问,我很乐意更详细地描述
编辑:为了从其他视图中解除警报,您必须创建一个方法来创建警报以关闭它,将标题导入到它所推送的视图中,从中查找父视图孩子,然后在你想要的时候解雇。我将在下面详细解释。首先,创建一个从父节点中删除视图的方法,我将其称为Parent
- (void)dismissAlert {
[alert dismissAlertWithClickedButtonIndex:0 animated:YES];
}
在您推送的视图中,请务必将#import "Parent.h"
放在实现文件的顶部。
现在只需查找视图并调用方法即可。您可以更改调用它的位置,但是出于示例目的,我只是在子文件的viewDidAppear:
方法中启动计时器并从那里开始。
- (void)viewDidAppear:(BOOL)animated {
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(dismiss) userInfo:nil repeats:NO];
}
然后创建dismiss
方法
- (void)dismiss {
// find the Parent view, which is most likely the top view in the navigation stack
// self.parentViewController will be the navigationController
// calling childViewControllers gets the navigation stack, so we get the view from there
[(Parent *)[[self.parentViewController childViewControllers] objectAtIndex:0] dismissAlert];
}
我已经对此进行了测试,但它确实有效,所以希望它可以帮到你。您可以将时间间隔更改为令人愉悦的时间间隔。考虑到我不知道您的应用程序的层次结构,很难说父视图相对于Child的位置,但是如果上面的不是它,您可以找到它。