如何在UIAlertView中访问UIButton

时间:2013-11-18 17:44:08

标签: ios uialertview

我想在我的UIAlertView上有选择地启用“保存”按钮,这样就无法保存没有名字的文件。我可以为附加的UITextView(样式是UIAlertViewStylePlainText)收听文本更改事件,但我看不到如何访问按钮以便我可以执行启用/禁用。我试过迭代[alertView子视图],但那里只有标签(没有按钮)。我需要在哪里直接访问连接到UIAlertView的UIButton?

4 个答案:

答案 0 :(得分:4)

简单,只需在您的类中实现UIAlertViewDelegate并使用alertViewShouldEnableFirstOtherButton:委托方法。您可以使用它来检查文本字段的长度,并相应地启用该按钮...

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
    return [[[alertView textFieldAtIndex:0] text] length] > 0;
}

确保使用< UIAlertViewDelegate >将视图控制器设置为在您的界面中符合此委托,并在实例化时将此类设置为警告委托。

答案 1 :(得分:0)

实例化您的提醒视图:

UIAlertView *av = [UIAlertView alloc] initWithTitle:@"my title" message:@"message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil];
    });

然后确保您的类实现UIAlertViewDelegate,并查找您要收听的按钮的按钮索引:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex==1) {
        //save here
    }
}

答案 2 :(得分:0)

0x7fffffff发布了正确答案,但如果有人正在寻找答案如何添加该文本字段并将按钮保存到UIAlertView,可以回答:

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Save" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil];
    [alert setAlertViewStyle:UIAlertViewStylePlainTextInput];

此委托方法:

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView {
    return [[[alertView textFieldAtIndex:0] text] length] > 0;
}
如果使用addButtonWithTitle:方法添加该保存按钮,

将无效。


单击保存按钮时,将调用此委托方法,您可以在此处读取用户写入该文本字段的内容:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if(buttonIndex == 1) {
       // Save button clicked
       NSLog(@"%@", [[alertView textFieldAtIndex:0] text]);
    }
}

答案 3 :(得分:-1)

从iOS 7开始,您无法访问警报视图的按钮。不幸的是,他们使子视图完全隐藏,无法访问它们。