Я создал голое приложение 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, размер всплывающего окна совпадает с размером самого большого контроллера представления, который был помещен в стек. Я искал и добавил следующий код в класс контроллера Master View:
- (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];
}
Однако это не имеет никакого эффекта. Также после закрытия всплывающего окна (путем поворота или отмены выбора всплывающего окна в пользовательском интерфейсе) размер всплывающего окна самого большого контроллера табличного представления, который ранее был помещен в стек, все еще сохраняется и полностью игнорирует вышеуказанные измерения. Чего мне не хватает?