3

做了一些谷歌搜索,发现 iOS 7 不再支持子视图。

有些人建议创建自定义视图,但我不确定我该怎么做。

这是我的代码,有人能指出我正确的方向吗?

-(IBAction)click_select_fruit_type
{
select_dialog = [[[UIAlertView alloc] init] retain];
[select_dialog setDelegate:self];
[select_dialog setTitle:@"Fruit Type"];
[select_dialog setMessage:@"\n\n\n\n"];
[select_dialog addButtonWithTitle:@"Cancel"];

idType_table = [[UITableView alloc]initWithFrame:CGRectMake(20, 45, 245, 90)];
idType_table.delegate = self;
idType_table.dataSource = self;
[select_dialog addSubview:idType_table];

[idType_table reloadData];

[select_dialog show];
[select_dialog release];

}
4

3 回答 3

13

您可以在 iOS7 的标准警报视图中将 accessoryView 更改任何自己的customContentView

[alertView setValue:customContentView forKey:@"accessoryView"];

请注意,您必须在[alertView show]之前调用它。

最简单的说明示例:

UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"TEST" message:@"subview" delegate:nil cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
v.backgroundColor = [UIColor yellowColor];
[av setValue:v forKey:@"accessoryView"];
[av show];

在此处输入图像描述

真正的tableView作为UIAlertView示例的子视图:

在此处输入图像描述

于 2014-01-11T20:39:53.797 回答
1

你不能。UIAlertViewApple 弃用了在 iOS 7中添加任何子视图的能力。我认为这是一个不错的决定。很多人被虐UIAlertView

创建自定义视图是个好主意,但这不是您在代码中编写的内容。似乎您正在UIAlertView再次添加子视图。

请参阅此处的警报视图 UI 指南

于 2013-10-07T03:05:56.967 回答
0

you'll have to subclass UIViewController and use its preferredContentSize property to do some 'custom modal' mimicking UIAlertView layout

于 2013-10-07T03:11:58.900 回答