在哪里放置通用的UIAlertView代码
我有一个密码UIAlertView,我们要求用户。 我需要根据场景在不同的视图上提问,从downloadViewController(在用户下载数据之后),切换到他们的数据(如果用户有多个帐户,每个帐户有一个密码)以及应用程序从睡眠中醒来(从应用程序代理)。
我有共同的UIAlertView代码,基本上检查数据库的密码和东西。 有没有一个放置这个通用代码的好地方? 我觉得我正在复制并粘贴警报的显示和此警报的委托方法。 在某些视图控制器中,也会有其他警报,但我必须通过该特定ViewController中的UIAlertViewDelegate对这些警报作出响应。
你可以像这样创建一个类别,然后重新使用代码:
* .h文件
@interface UIViewController(Transitions)
- (void) showAlertWithDelegate: (id) delegate;
@end
* .m文件
-(void) showAlertWithDelegate:(id)delegate {
id _delegate = ( delegate == nil) ? self : delegate;
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: NSLocalizedString(@"Alert Text",@"Alert Text")
message: NSLocalizedString( @"Msg Alert",@"Msg Alert")
delegate:_delegate
cancelButtonTitle:nil
otherButtonTitles: NSLocalizedString(@"OK",@"OK"),nil];
[alert setTag:0]; //so we know in the callback of the alert where we come from - in case we have multiple different alerts
[alert show];
}
//the local callback for the alert - this handles the case when we call the alert with delegate nil
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
D_DBG(@"%i %i",[alertView tag],buttonIndex);
}
在需要警报的UIViewController类中导入* .h文件。
现在如果你这样打电话:
[self showAlertWithDelegate:nil];
它会显示你的警报,代表将实施
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
在界面中,当你这样称呼它时:
[self showAlertWithDelegate:self];
你需要提供回调
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
在你指定的类中,你可以处理用户按下的任何内容 - 与界面中实现的内容不同。
链接地址: http://www.djcxy.com/p/20345.html上一篇: Where to put common UIAlertView code
下一篇: iPhone force kill while in background using CLLocationManager