我厌倦了编写基本的UIAlertView,即:
UIAlertView *alert = [[UIAlertView alloc] initWith...]] //etc
不是这样做,是否可以将所有这些放在“帮助器”函数中,我可以返回buttonIndex,或者通常返回什么警报?
对于一个简单的辅助函数,我猜你可以为标题,消息提供参数,我不确定你是否可以在参数中传递委托,或者捆绑信息。
在伪代码中,它可能是这样的:
someValueOrObject = Print_Alert(Title="", Message="", Delegate="", Bundle="") // etc
对此的任何帮助都会很棒。
由于
答案 0 :(得分:14)
在4.0+中,您可以使用块简化警报代码,如下所示:
CCAlertView *alert = [[CCAlertView alloc]
initWithTitle:@"Test Alert"
message:@"See if the thing works."];
[alert addButtonWithTitle:@"Foo" block:^{ NSLog(@"Foo"); }];
[alert addButtonWithTitle:@"Bar" block:^{ NSLog(@"Bar"); }];
[alert addButtonWithTitle:@"Cancel" block:NULL];
[alert show];
答案 1 :(得分:2)
这是我写的,当我厌倦了做同样的事情时:
-(void)alert:(NSString *)title withBody:(NSString *)message firstButtonNamed:(NSString *)firstButtonName {
[self alert: title withBody: message firstButtonNamed: firstButtonName withExtraButtons: nil informing: nil];
}
-(void)alert:(NSString *)title withBody:(NSString *)message firstButtonNamed:(NSString *)firstButtonName informing:(id)delegate {
[self alert: title withBody: message firstButtonNamed: firstButtonName withExtraButtons: nil informing: delegate];
}
-(void)alert:(NSString *)title withBody:(NSString *)message firstButtonNamed:(NSString *)firstButtonName withExtraButtons:(NSArray *)otherButtonTitles informing:(id)delegate {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: title
message: message
delegate: delegate
cancelButtonTitle: firstButtonName
otherButtonTitles: nil];
if (otherButtonTitles != nil) {
for (int i = 0; i < [otherButtonTitles count]; i++) {
[alert addButtonWithTitle: (NSString *)[otherButtonTitles objectAtIndex: i]];
}
}
[alert show];
[alert release];
}
你不能编写一个显示警告的函数,然后返回一个类似buttonIndex的值,因为只有当用户按下按钮并且你的代理人做了某些事情时才会返回这个值。
换句话说,使用UIAlertView
提问的过程是异步的。