在我的应用程序中,我想在许多视图中使用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
有人可以帮我吗?
提前致谢。
答案 0 :(得分:1)
通过将警报视图对象委托通常设置为所有者对象并实现 - alertView:clickedButtonAtIndex:方法,您可以连接警报视图按钮响应方法。
您的代码需要4个部分:
示例:
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编译器应该警告您这一点)