Хорошо. Вам нужен контроллер навигации, корневым представлением которого является табличное представление. Затем, возможно с помощью пользовательского ввода, вы хотите, чтобы это табличное представление увеличилось на 100 пикселей, а другое представление имеет место внизу. Пока другое представление остается, пользователь может продолжать использовать представление таблицы.
Вот как бы я это сделал:
Создайте контроллер общего вида (назовем его NavigationWithAuxiliaryViewController
). Корневое представление этого класса охватывает все окна вашего приложения.
Это представление имеет экземпляр UINavigationController
в качестве свойства, скажем, navController
. Он также имеет UIView (для другого представления) в качестве своего свойства (скажем, auxView
). Расположите другой вид внизу. Однако это представление по умолчанию скрыто. Кроме того, рамка корневого представления UINavigationController охватывает весь вид.
Когда вы решите сжать табличное представление, измените frame
свойство UINavigationController. Сделайте что-то вроде этого (но не так ужасно):
if (slideViewOn) {
[UIView beginAnimations:@"slideUp" context:nil];
navController.view.frame = CGRectMake(0, 0, 320, 260);
auxView.hidden = NO;
[UIView commitAnimations];
} else {
[UIView beginAnimations:@"slideDown" context:nil];
navController.view.frame = CGRectMake(0, 0, 320, 480);
auxView.hidden = YES;
[UIView commitAnimations];
}
Самый простой способ сжать весь материал навигации / таблицы - это изменить весь кадр для контроллера навигации, поэтому вам нужно отдельное представление (вне контроллера навигации) для другого представления.