представление таблицы перемещается вверх под панелью навигации, когда пользователь нажимает на строку
у меня естьUINavigationController
(NC), содержащийUITableViewController
(TVC0). Когда пользователь нажимает на строку, он загружаетUIPageViewController
(ПВХ), какие страницы назад и вперед между другимиUITableViewController
с (TVC1).
TVC0 отображается внутри NC (то есть он не прячется за панелью навигации вверху или панелью вкладок внизу). Когда он выдвигает PVC, первый TVC1 появляется внутри границ панели навигации и панели вкладок. Однако, когда я проведу пальцем, TVC1 внутри будут скрыты за панелью навигации и панелью вкладок. Я могу потянуть, чтобы раскрыть содержимое, но когда я отпускаю, он возвращается к задней панели.
Как я могу заставить все появляться между двумя барами? Я не могу использовать раскадровку (потому что это устаревшее приложение), а опция внедрения ... недоступна.
[Редактировать]
Я добавил некоторые записи и обнаружил, что мой встроенный кадр TVC1 имеет абсолютное начало 0, 64, но как только я коснусь, он перейдет к 0, 0. Если я не могу найти реальное решение, я всегда могу подделать его добавив 64, но я бы предпочел выяснить, что на самом деле не так.
[/Редактировать]
[Подробнее Редактировать]
Я тестировал другую область в симуляторе iOS 6 и обнаружил, что эта подкачка работает безупречно в iOS 6. Так что проблема, которую я вижу, специфична для iOS 7.
[/ More Edit]
Вот мой TVC0viewDidLoad
ПВХpageViewController:viewControllerBeforeViewController:
и помощникviewControllerAtIndex:
:
- (void) viewDidLoad
{
[super viewDidLoad];
NSDictionary* options = [NSDictionary dictionaryWithObject:
[NSNumber numberWithInteger: UIPageViewControllerSpineLocationMin]
forKey:
UIPageViewControllerOptionSpineLocationKey];
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:
UIPageViewControllerTransitionStyleScroll
navigationOrientation:
UIPageViewControllerNavigationOrientationHorizontal
options: options];
self.pageController.dataSource = self;
self.pageController.view.frame = self.view.frame;
NSArray* viewControllers =
[NSArray arrayWithObject: [self viewControllerAtIndex: self.initialIndex]];
[self.pageController setViewControllers: viewControllers
direction: UIPageViewControllerNavigationDirectionForward
animated: NO
completion: nil];
[self addChildViewController: self.pageController];
[self.view addSubview: self.pageController.view];
[self.pageController didMoveToParentViewController: self];
for (UIGestureRecognizer* recognizer in self.pageController.gestureRecognizers)
{
if ([recognizer isKindOfClass: [UITapGestureRecognizer class]])
{
recognizer.enabled = NO;
}
}
}
// SearchResultsList is TVC1
- (SearchResultsList*) viewControllerAtIndex: (NSUInteger) index
{
if (index >= self.items.count)
{
return nil;
}
SearchResultsList* retVal = [[SearchResultsList alloc]
initWithNibName: @"SearchResultsList" bundle: nil];
MyListItem* myItem = [self.items objectAtIndex: index];
MyMatchesRequest* matches = [[MyMatchesRequest alloc] initWithItemId: myItem.itemId];
[matches execute: ^(MySearchResults* results)
{
retVal.tableData = [NSMutableArray arrayWithArray: results.items];
retVal.view.frame = self.view.frame;
retVal.myItem = myItem;
retVal.index = index;
self.title = myItem.displayText;
[[retVal tableView] reloadData];
}];
return retVal;
}
- (UIViewController*) pageViewController: (UIPageViewController*) pageViewController
viewControllerBeforeViewController: (UIViewController*) viewController
{
SearchResultsList* vc = (SearchResultsList*)viewController;
if (vc.index == 0)
{
[self.navigationController popViewControllerAnimated: YES];
return nil;
}
return [self viewControllerAtIndex: vc.index - 1];
}