TVC0出现在NC里面(这意味着它不会隐藏在顶部的导航栏或底部的选项卡栏后面)。 当它推出PVC时,第一个TVC1出现在导航栏和选项卡栏的边界内。 但是,当我滑动时,内部的TVC1会隐藏在导航栏和选项卡栏后面。 我可以拉出来查看内容,但放开时,它会自动回到栏的后面。
我该如何强制使所有内容都出现在这两个栏之间? 我无法使用Storyboard(因为它是一个旧版应用程序),也没有可用的“嵌入...”选项。
[编辑]
我添加了一些日志记录,并发现我的嵌入式TVC1框架具有绝对起点0,64,但只要我点击,它就会变成0,0。如果我找不到真正的解决方案,我始终可以通过添加64来进行虚假操作,但我更想知道实际上是什么问题。
[/编辑]
[更多编辑]
我正在iOS 6模拟器中测试另一个区域,并发现这种分页在iOS 6中非常完美。因此,我看到的问题是特定于iOS 7的。
[/更多编辑]
以下是我的TVC0的viewDidLoad,PVC的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];
}