0

我有设置 UIAlertView 的代码:

-(IBAction)showMessage
{
//NSInteger *buttonIndex = NULL;
UIAlertView *message = [[UIAlertView alloc] initWithTitle:nil 
message:nil 
delegate:nil 
cancelButtonTitle:@"Cancel" 
otherButtonTitles:@"Email",@"SMS",@"Facebook",@"Twitter", nil];
[message show];
}

以及解释用户做出选择后要做什么的代码:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1){
        [self openMail];
    }
    else if (buttonIndex == 2)
//etc.
}

但我不知道如何将两者联系起来。alertView: clickedButtonAtIndex显而易见的答案是在调用的第一段代码中添加一行UIAlertView *message,但是如何分配buttonIndex呢?你如何alertView判断用户是否选择了 Facebook、Email 等?

4

2 回答 2

1

如果您还没有添加到头文件中:

@interface YourClass : UIViewController <UIAlertViewDelegate>
{
}

...ETC

并在您的 AlertView 代码中将 delegate:nil 更改为 delegate:self

有关更多信息,请查看 Apple 文档:http: //developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html

来自文档: 按钮索引从 0 开始。如果这是取消按钮索引,则警报视图正在取消。如果为 -1,则不设置取消按钮索引。

于 2012-08-09T01:27:56.750 回答
1

delegate:self(1)初始化消息时要设置。此外,在您的接口声明中,执行以下操作:

@interface myClass: UIViewController <UIAlertViewDelegate>

这样,当用户进行选择时,您的处理程序函数会自动被调用。

(2) 按钮按您列出的顺序编入索引。

(3) 由于您有很多选项供用户选择,因此最好使用 UIActionSheet 而不是 UIAlertView。警报通常用于简单的是/否类型选择。

希望这可以帮助!

于 2012-08-09T01:39:04.210 回答