【发布时间】:2014-01-09 23:18:22
【问题描述】:
我在发布此问题之前进行了搜索,但找不到任何内容。
我遇到了一个大问题。我有一个滚动类型 UIPageViewController 作为我的应用程序的基础,有 3 个视图控制器。
其中一个视图控制器 (listTableView) 有一个表格视图和一个搜索显示控制器。
问题是,当像普通表格视图一样点击状态栏时,我无法滚动到表格视图的顶部。我相信 UIPageViewController 会干扰此问题,但我不知道如何修复它,但我知道我需要让我的应用程序不会感到损坏。
感谢您提供的任何帮助。
我知道有人会要求提供代码,即使在这种情况下它是无关紧要的,但这里是用于创建 UIPageViewController:
#import "MainViewController.h"
@interface MainViewController ()
@property (nonatomic, strong) UIPageViewController *pageViewController;
@property (nonatomic, strong) NSArray *contentViewControllers;
@end
@implementation MainViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageView"];
self.pageViewController.dataSource = self;
UIViewController *settings = [self.storyboard instantiateViewControllerWithIdentifier:@"Settings"];
UIViewController *listTableView = [self.storyboard instantiateViewControllerWithIdentifier:@"List"];
UIViewController *first = [self.storyboard instantiateViewControllerWithIdentifier:@"First"];
self.contentViewControllers = [NSArray arrayWithObjects:settings,listTableView,first,nil];
[self.pageViewController setViewControllers:@[first] direction:UIPageViewControllerNavigationDirectionReverse animated:NO completion:nil];
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
self.view.backgroundColor = [UIColor colorWithRed:(248.0/255.0) green:(248.0/255.0) blue:(248.0/255.0) alpha:1.0];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [self.contentViewControllers indexOfObject:viewController];
if (index == 0) {
return nil;
}
return self.contentViewControllers[index - 1];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [self.contentViewControllers indexOfObject:viewController];
if (index >= self.contentViewControllers.count - 1) {
return nil;
}
return self.contentViewControllers[index + 1];
}
【问题讨论】:
-
您是否尝试将
添加到您的 MainViewController 界面? -
是的,我有,但这不起作用。问题是您根本无法访问 UIPageViewController 不幸包含并破坏一切的 _UIQueuingScrollView。
-
我已按照您对应用程序的描述,并用您的代码重新实现了它。它行为正确,我无法复制您的问题。问题一定出在应用程序的其他地方——你能提供更多信息吗?也许你的“列表”视图控制器中的一些代码。
-
你能显示 MainViewController 接口的声明吗? (MainViewController.h)
标签: ios objective-c uitableview uisearchdisplaycontroller uipageviewcontroller