将元素添加到UIAlertview

时间:2011-05-13 07:50:06

标签: objective-c uialertview

我需要在iphone项目的警报视图的2个默认按钮下插入视图(自定义按钮)。 我搜了很久但是我没有找到按钮下的插入元素,提示?

1 个答案:

答案 0 :(得分:0)

不完全清楚你想要做什么,但有一些可能性。如果你只想要常规按钮,你可以使用otherButtons参数在那里粘贴尽可能多的按钮。

UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Other", @"Other2", nil];

您还可以使用addButtonWithTitle添加任意数量的内容。

UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"OK", nil];
[anAlert addButtonWithTitle:@"My Other Button"];

如果你真的想要一个自定义按钮,事情会变得棘手。干扰UIAlertViews中的任意视图是我的一些爱好(请参阅我关于主题herehere以及here的博文)。但是,在所有这些情况下,视图最终都高于正常按钮;按钮固定在视图的底部,我知道无法改变这种行为。

您可以做的一件事是创建没有按钮的UIAlertView,然后根据需要创建和添加任意数量的自定义按钮。首先,我想指出这可能是一个坏主意。这不是一个好的用户体验,除非你是TapBots,坚持使用Apple's HIG通常是一个好主意。

说完这一切之后,这样的事情可能有用:

UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert\n\n\n\n" delegate:self cancelButtonTitle:nil otherButtonTitles:nil];

UIButton* okButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
okButton.frame = CGRectMake(12, 80, 130, 50);
[okButton setTitle:@"OK" forState:UIControlStateNormal];
[anAlert addSubview:okButton];

UIButton* cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cancelButton.frame = CGRectMake(144, 80, 130, 50);
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[anAlert addSubview:cancelButton];

UIButton* otherButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
otherButton.frame = CGRectMake(12, 136, 260, 50);
[otherButton setTitle:@"My Other Button" forState:UIControlStateNormal];
[anAlert addSubview:otherButton];   

警告消息末尾的换行符会水平展开警报视图,为添加按钮腾出空间。在这里,我只是做简单的UIButtons(看起来很可怕);希望你的自定义按钮看起来更好。您需要通过对坐标进行硬编码来自行布局,这些坐标很脆弱(根据您的消息和屏幕方向而变化)。最后,由于没有任何默认按钮,因此无法解除警报,因此您必须确保在这些按钮上粘贴处理程序以实现此目的。您可以使用按钮上的addTarget:action:forControlEvents:执行此操作。