我有一个带故事板的应用程序.我正在使用多个带有segue的View Controller,可根据所选项目从表格视图中进行选择.我想要一个页面视图控制器,其中页面将是故事板中的一个或多个视图控制器,甚至重复它们.我正在尝试这样init
的页面视图控制器:.... self.dataSource = self;
UIViewController *initialViewController =[self viewControllerAtIndex:current];
NSArray *viewControllers = [NSArray arrayWithObject:initialViewController];
[self setViewControllers:viewControllers direction:UIPageViewControllerNavigationOrientationHorizontal animated:NO completion:nil];
....
- (UIViewController *)viewControllerAtIndex:(NSUInteger)index
{
if ((descriptions.count == 0) ||
(index >= descriptions.count)) {
return nil;
}
current=index;
// Create a new view controller and pass suitable data.
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
Description *description=[DBCompany getDescriptionById:language descriptionId:[[descriptions objectAtIndex:index] integerValue]];
UIViewController *viewController=nil;
if(description.frame==100){
viewController=[[Company100ViewController alloc] init];
((Company100ViewController*)viewController).companyId = companyId;
}
return viewController;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController …
Run Code Online (Sandbox Code Playgroud) 我在发布这个问题之前搜索过,但找不到任何东西.
我有一个很大的问题.我有一个滚动类型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 …
Run Code Online (Sandbox Code Playgroud) objective-c uitableview uisearchdisplaycontroller ios uipageviewcontroller
我看到我可以删除所有UIPageViewController手势,但是如果我只想删除边缘上的点按手势呢?并保持滑动手势?这可能吗?
谢谢
在iOS6中的方法viewControllerAfterViewController和viewControllerBeforeViewController如果我返回nil(当我在第一页或最后一页时阻止页面导航)应用程序崩溃时出现此异常:
'提供的视图控制器数量(0)与请求的转换所需的数量(1)不匹配
在iOS5中,一切都很好.
由于Xcode的UIPageViewController模板缓存了所有页面数据,我遇到了一些内存问题,因此我将其更改为动态加载页面,所以现在当我的应用程序收到内存不足警告时,它会释放内存以便页面不显示,但如果用户通过点击屏幕边缘快速翻阅页面,它仍然会崩溃.我猜这是因为当调用didReceiveMemoryWarning时,它无法足够快地释放内存.如果用户缓慢翻转,它可以正常工作.我限制了用户翻页的速度,但它仍然会发生.我希望每次翻页时都能释放内存,而不必等待低内存警告.我正在使用ARC.有没有办法做到这一点?或者我还能做些什么来防止这种情况发生?谢谢.
编辑:
(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger index = [self indexOfViewController:(SinglePageViewControllerSuperclass *)viewController];
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger index = [self indexOfViewController:(SinglePageViewControllerSuperclass *)viewController];
if (index == NSNotFound || index == MAX_PAGE_INDEX) {
return nil;
}
return [self viewControllerAtIndex:++index];
}
Run Code Online (Sandbox Code Playgroud) 嘿我正在使用UIPageViewController控制我在哪个页面和滚动.我知道只需添加以下两个函数就可以显示页面控制器.
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否可以更改页面控制器的颜色,所以在我使用的背景上点更明显?
我知道常规页面控制器具有以下属性:
@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor
@property(nonatomic,retain) UIColor *pageIndicatorTintColor
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何从UIPageViewController访问这些属性或页面控制器.
如果有人刚才说如何更改属性,这可能会有所帮助?
iOS文档说我们可以一次呈现一页或两页,具体取决于脊柱的位置或位置以及双面状态......
但是,我无法理解" UIPageViewController中究竟是什么脊柱? "
我有一个UIPageViewController,我只是无法弄清楚如何知道用户转向页面的方向,以便我可以适当地设置页数.
谢谢Shani
当我浏览UIPageViewController
速度超过其过渡动画时,我得到了' Unbalanced calls to begin/end appearance transitions for <MyDataViewController>
',并且在我尝试翻页之前,横向中的两个视图中的一个未显示.
有人有想法解决这个bug吗?
我已经实现了UIPageViewController的数据源方法,但仍然没有在我的iOS应用程序底部获得点.任何人都有任何解决方案,使我的应用程序上出现点?
ios ×8
objective-c ×4
iphone ×2
ios7 ×1
ipad ×1
properties ×1
swift ×1
transition ×1
uitableview ×1
xcode ×1