@ Джона указал мне на следующее объяснение, которое он предоставил: Вопрос о представлении View Controller
В настоящее время у меня есть MainViewController , чье основное (корневое?) Представлениесодержит кнопку UIB Add Record, которая связана со следующим методом и зависит от того, какую страницу пользователь в данный момент открыл в UIScrollView:
#pragma mark -
#pragma mark Add View Support
- (void)add:(id)sender {
MyAddViewController *controller = nil;
// Dynamically creating and allocating the Add View Controller
if (dataViewPageControl.currentPage == 0) {
controller = [[MyAddViewController alloc] initWithAddType:1];
} else {
controller = [[MyAddViewController alloc] initWithAddType:0];
}
controller.delegate = self;
// Slide the new AddViewController's view in from the right
CGPoint initialCenter = self.view.center;
controller.view.center = CGPointMake(initialCenter.x + 320, initialCenter.y);
[self.view addSubview:controller.view];
[UIView beginAnimations:@"animation" context:NULL];
[UIView setAnimationDuration:0.35];
[UIView setAnimationDelegate:controller];
controller.view.center = CGPointMake(initialCenter.x, initialCenter.y);
[UIView commitAnimations];
}
MainViewControllerявляется делегатом для MyAddViewController (который имеет кнопку CANCEL / CLOSE), и когда нажимается его кнопка закрытия, MyAddViewController освобождается с помощью метода close в этом MainViewController.
Как видите, представление MyAddViewController становится подпредставлением длятекущее корневое представление (Bad? Bad? Bad?). Представление MyAddViewController является представлением полного размера (320x416), но его верхняя половина прозрачна, так что представление MainViewController можно увидеть ниже в верхней половине, а нижняя половина содержит представление AddViewController.и текстовые поля и т.д ....
На основании чегоЯ только что прочитал @Jonah по ссылке в самом верху, такой дизайн - BAD, BAD, BAD.При тестировании в Instruments я заметил, что MyAddViewController иногда отстает при скольжении. Я нажму кнопку ADD, чтобы запустить этот метод, и иногда перед задержкой от 3 до 5 секундвид скользит. Какая-то задержка во всем управлении памятью и очистке?
Я предполагаю, что смогу исправить это, создав одно свойство MyAddViewController внутри MainViewController, которое будет препятствовать распределению и освобождению при каждом нажатии кнопки.Это должно сделать вещи более гладкими?Мое единственное беспокойство заключается в том, что это вызовет больший отпечаток памяти во время загрузки приложения. Instruments , кажется, показывает выделение 516 КБ каждый раз, когда я впервые нажимаю ADD в своем приложении.
Есть какие-нибудь рекомендации по дизайну и как это улучшить?Причина, по которой мне нравится иметь отдельные контроллеры представлений с такими вложенными представлениями, заключается в том, что MyAddViewController имеет lot логики с Core Data и тому подобным, и MainViewController уже достаточно занят, как есть.Пытаться держать вещи модульными.
Заранее спасибо!