我试图让以下工作,这个例子出现在几个网站上,但我似乎无法让它运作。
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Yes, like this" message:@"What are you looking at?" cancelButtonTitle:@"Leave me alone" otherButtonTitles:@"Button 1",@"Button 2",nil];
[alert showWithDismissHandler:^(NSInteger selectedIndex, BOOL didCancel) {
if (didCancel) {
NSLog(@"User cancelled");
return;
}
switch (selectedIndex) {
case 1:
NSLog(@"1 selected");
break;
case 2:
NSLog(@"2 selected");
break;
default:
break;
}
}];
我收到的警告是
对于' UIAlertView'没有可见的@interface;声明选择器' initWithTitle:message:cancelButtonTitle:otherButtonTitles:'
对于' UIAlertView'没有可见的@interface;声明选择器' showWithDismissHandler:'
正是一个非常愚蠢的问题,但我错过了什么。
由于
答案 0 :(得分:4)
签名不正确。你错过了代表。
– initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:
标准UIAlertView
没有showWithDismissHandler
方法。如果您从互联网上复制了一些代码,可能需要下载一些支持UIAlertView
{@ 1}}回调的第三方软件包(其中包含很多代码)。
答案 1 :(得分:1)
是的,彼得是对的!第一个警告是因为签名不正确:
– initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:
您在此处尝试执行的操作是在使用alertview is dismissed
和method
is not available
时执行某些操作。实施UIAlertViewDelegate
,然后使用这些方法中的任何一种来完成您在此处尝试的操作。
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
这是指UIAlertView委托参考的链接:
答案 2 :(得分:0)
您是否正在使用类似UBAlertView
的内容?如果是这样,您需要实例化UBAlertView
,而不是UIAlertView
:
UBAlertView *alert = [[UBAlertView alloc] initWithTitle:@"Yes, like this"
message:@"What are you looking at?"
cancelButtonTitle:@"Leave me alone"
otherButtonTitles:@"Button 1",@"Button 2",nil];
[alert showWithDismissHandler:^(NSInteger selectedIndex, BOOL didCancel) {
... etc ...
(我喜欢在长方法调用中添加换行符以使它们更具可读性。)