UIAlertView在实用程序类中被解雇

时间:2014-04-11 10:49:59

标签: ios objective-c uialertview

在我的应用程序中,我想在许多视图中使用alertview。所以我所做的只是在实用程序类中编写了一个alertview并在任何地方使用它。这很好。

我甚至试过设置<UIAlertViewDelegate>但是徒劳无功。

实用程序类

    @interface SSUtility: NSObject<UIAlertViewDelegate> {

    }

    +(void)showAllert;
    @end


    @implementation SSUtility    
         +(void)showAllert{
          UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"gotoappAppstore",@"") message:@"" delegate:self cancelButtonTitle:NSLocalizedString(@"Ok",@"") otherButtonTitles:nil];
          [alert show];
          [alert release];
        }
        @end

Now from my view

 -(void)pressButton{
[SSutility showAllert]

}

现在,我想为警报视图提供一个按钮操作,单击并调用该按钮操作的方法。

所以我坚持,在哪个类我想实现这个方法。我在实用程序类和viewc控制器中尝试过但是当&#34; ok&#34;按下按钮。

-(void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 

有人可以帮我吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

通过将警报视图对象委托通常设置为所有者对象并实现 - alertView:clickedButtonAtIndex:方法,您可以连接警报视图按钮响应方法。

您的代码需要4个部分:

  1. 实例化您的UIAlertView对象
  2. 向您的UIAlertView对象发送show message
  3. 设置委托
  4. 实施委托方法
  5. 示例:

    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"myTitle" message:@"myMessage" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitle:@"Another button"];
    [myAlertView setDelegate:self];
    [myAlertView show];
    
    
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
        {
        if (buttonIndex == 0) //index 0 is cancel, I believe
            {
            // code for handling cancel tap in your alert view
            }
        else if (buttonIndex == 1)
            {
            // code for handling button with index 1
            }
        }
    

    我建议您更熟悉代表的工作方式。这将再次回归。

答案 1 :(得分:0)

您在delegate:nil的初始设置中设置UIAlertView

您应该设置为delegate:self,如下所示:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"gotoappAppstore",@"") message:@"" delegate:self cancelButtonTitle:NSLocalizedString(@"Ok",@"") otherButtonTitles:nil];

为了在同一个类中使用委托(a.k.a。self)。

作为旁注,如果您使用自动引用计数(ARC),则不需要[alert release](您的Xcode编译器应该警告您这一点)