我想在我的UIAlertView上有选择地启用“保存”按钮,这样就无法保存没有名字的文件。我可以为附加的UITextView(样式是UIAlertViewStylePlainText)收听文本更改事件,但我看不到如何访问按钮以便我可以执行启用/禁用。我试过迭代[alertView子视图],但那里只有标签(没有按钮)。我需要在哪里直接访问连接到UIAlertView的UIButton?
答案 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开始,您无法访问警报视图的按钮。不幸的是,他们使子视图完全隐藏,无法访问它们。