我有一个UINavigationController
(NC)包含UITableViewController
(TVC0).当用户点击一行时,它会加载一个UIPageViewController
(PVC),它在其他UITableViewController
s(TVC1)之间来回翻页.
TVC0显示在NC内部(意味着它不会隐藏在顶部的导航栏或底部的标签栏后面).当它推动PVC时,第一个TVC1出现在导航栏和标签栏的边界内.但是当我滑动时,里面的TVC1隐藏在导航栏和标签栏后面.我可以拉出来揭示内容,但当我释放时,它会快速回到栏后面.
如何强制一切出现在两个酒吧之间?我不能使用故事板(因为它是一个遗留应用程序)并且嵌入...选项不可用.
[编辑]
我添加了一些日志记录,发现我的嵌入式TVC1s帧的绝对原点为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]; }
Nick.. 14
我有类似行为的非常痛苦的学习经历:(
把它放在你的视图控制器的init中:
self.automaticallyAdjustsScrollViewInsets = NO;
这是iOS 7 UIViewController
中默认的新属性YES
UIViewController文档
我有类似行为的非常痛苦的学习经历:(
把它放在你的视图控制器的init中:
self.automaticallyAdjustsScrollViewInsets = NO;
这是iOS 7 UIViewController
中默认的新属性YES
UIViewController文档