我使用提供的模板创建了一个基本的 Master/Detail iPad 应用程序。它创建了两个视图控制器(Master 和 Detail)。我创建了一个视图附加视图控制器,这些视图控制器在主视图控制器顶部弹出(几乎向下钻取表格视图,直到最终点击填充详细视图的单元格。我添加了下面的代码以加载主视图控制器弹出框到指定的尺寸(下面的代码还显示从主视图控制器表视图中选择选择时):
@implementation MasterViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.vehicles = [[NSArray alloc] initWithObjects:@"Cars", @"Trucks", @"Boats", nil];
self.title = @"Vehicle Type";
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, [vehicles count] * 52.0);
}
return self;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.studySessionViewController)
{
self.secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
}
[self.navigationController pushViewController:self.secondViewController animated:YES];
}
当应用程序首次加载时选择弹出框时,一切看起来都很棒。但是,当用户点击返回 MasterViewController 时,弹出框的大小与被压入堆栈的最大视图控制器的大小相同。我四处搜索,并在主视图控制器类中添加了以下代码:
- (void)viewWillAppear:(BOOL)animated
{
self.contentSizeForViewInPopover = CGSizeMake(320.0, [vehicles count] * 52.0);
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
self.contentSizeForViewInPopover = CGSizeMake(320.0, [vehicles count] * 52.0);
[super viewDidAppear:animated];
}
但是,这没有效果。同样,一旦弹出框关闭(通过旋转或取消选择 UI 上的弹出框),之前推送到堆栈上的最大 table view 控制器的弹出框大小仍然保留,并完全忽略上述尺寸。我错过了什么?