如何使用 xcode 在警报视图上添加一个额外的按钮?
Posted
技术标签:
【中文标题】如何使用 xcode 在警报视图上添加一个额外的按钮?【英文标题】:How to add a extra button on Alert view using xcode? 【发布时间】:2014-04-18 12:11:34 【问题描述】:额外信息:我一定问错了,我希望用户点击按钮并被重定向到 Facebook!
我需要在下面的代码中添加一个名为“facebook”的访问 facebook 按钮!现在我只有一个确定按钮。
如果可能的话,您能否帮助我理解,我将如何检索用户信息 - 例如,我会要求他们在文本字段中添加电子邮件,当他们按下确定时,我将在哪里存储电子邮件并获取它,它是如何工作的,我需要阅读哪些内容才能找到答案?
【问题讨论】:
您可以使用'otherButtonTitles:@"a",@"b""'添加其他按钮 【参考方案1】:尝试在 otherButtonTitles 中添加按钮
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Refresh"
message:@"Are you want to Refresh Data"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Button1",@"Button2",@"Button3",
nil];
【讨论】:
是的,我希望按钮将他们带到 Facebook 页面! 你可以使用 UIAlertView 的委托 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex。在这个委托中检查 UIButton 索引并创建一个 URLConnection。 @Ricky 你希望人们为你创建代码吗?答案中的逻辑是正确的。现在了解如何实现 facebook。 @Ricky,这里不提供这种服务。我们是来帮助你的,而不是给你答案。提供代码对编程没有帮助。在程序中遇到问题,然后找到解决方案将对您有所帮助【参考方案2】:根据 Duncan 的回答,您可以使用委托并获取单击了哪个按钮。因此,在特定按钮的点击上,您可以使用以下代码重定向到 facebook 页面。
UIAlertView *info = [[UIAlertView alloc]initWithTitle:@"Yup" message:@"You've won! Like Us on Facebook too" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Facebook", nil];
info.tag = 10;
[info show];
因此,当用户按下 Facebook 按钮时,将调用委托方法 alertView:clickedButtonAtIndex
,因此此时检查 alert.tag,然后检查是否点击了 Facebook 按钮,然后显示另一个警报。
你的委托方法应该是
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
if (alertView.tag == 10)
switch (buttonIndex)
case 0:
NSLog(@"Cancel");
break;
case 1:
NSLog(@"Facebook");
[self showAlertForRedirect];
break;
default:
break;
else if (alertView.tag == 20)
switch (buttonIndex)
case 0:
NSLog(@"Cancel");
break;
case 1:
NSLog(@"OK");
[self RedirectNow];
break;
default:
break;
-(void)showAlertForRedirect
UIAlertView *info2 = [[UIAlertView alloc]initWithTitle:@"Note" message:@"Would you like to redirect on facebook?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
info2.tag = 20;
[info2 show];
-(void)RedirectNow
NSURL *fanPageURL = [NSURL URLWithString:@"fb://profile/yourid"];
if (![[UIApplication sharedApplication] openURL: fanPageURL])
NSURL *webURL = [NSURL URLWithString:@"https://www.facebook.com/yourpagename"];
[[UIApplication sharedApplication] openURL: webURL];
【讨论】:
嗨伙计,这只是将我直接带到 Facebook,而不问我是否想去! 它仍然自动重定向我 @Ricky 那你想要什么?应用程序应该如何询问您是否要重定向到 Facebook 是的,我希望他们点击按钮转到 facebook,但如果我使用上面的格式,它甚至不会显示警报视图,而是会自动将使用推送到 facebook! 我收到一个错误:-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex【参考方案3】:正如另一位发帖者所说,您可以通过在 initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:
方法的 otherButtonTitles 参数中提供按钮标题来添加其他按钮。
您可以通过将上述方法返回的按钮的alertViewStyle属性设置为UIAlertViewStylePlainTextInput
来设置您的警报具有输入字段
您需要传入 self(您的视图控制器)作为委托参数。
那你需要实现方法alertView:didDismissWithButtonIndex:
在该方法中,您将获得用户选择的按钮索引。您可以使用textFieldAtIndex:
方法获取指向文本字段的指针,并获取用户输入的文本。
【讨论】:
我一定是问错了,我希望用户点击按钮并被重定向到 Facebook! 警报不是这样工作的。您需要实现alertView:didDismissWithButtonIndex:
方法。在该方法中,您编写的代码检测到用户点击了 Facebook 按钮,如果是,则将他们重定向到 Facebook。以上是关于如何使用 xcode 在警报视图上添加一个额外的按钮?的主要内容,如果未能解决你的问题,请参考以下文章