如何使用 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 在警报视图上添加一个额外的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在警报视图中的文本之间添加图像?

SwiftUI 在 NavigationView 中添加个人警报视图,后退按钮不适用于 Xcode 12 iOS14

如何在我的警报视图上添加笑脸? [复制]

表格视图上方的额外空白快速Xcode

应用程序在 Xcode 上连接设备时显示警报视图,否则不会

如何防止键盘出现在自定义警报视图上