如何在 iOS 5 中向 UIPageViewController 添加页面数组?

2023-12-04

有谁知道我缺少什么才能将我自己的视图控制器手动添加到 UIPageViewController 方法中?

我目前有这个,我不知道如何继续:

NSDictionary *pageViewOptions = [NSDictionary dictionaryWithObjectsAndKeys:UIPageViewControllerOptionSpineLocationKey, [NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin], nil];

self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:pageViewOptions];


BookViewController *pageOne = [self.storyboard instantiateViewControllerWithIdentifier:@"BookViewController"];

AnotherPage *pageTwo = [self.storyboard instantiateViewControllerWithIdentifier:@"AnotherPage"];

PageThree *pageThree = [self.storyboard instantiateViewControllerWithIdentifier:@"PageThree"];


self.pageViewController.delegate = self;
self.pageViewController.dataSource = self;

[self.pageViewController setViewControllers:[NSArray arrayWithObjects:pageOne, pageTwo, pageThree, nil] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

[self addChildViewController:self.pageViewController];

[self.view addSubview:self.pageViewController.view];

self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;

[self.pageViewController didMoveToParentViewController:self];

但这似乎不起作用。我只看到 RootViewController。

感谢所有愿意提前帮助像我这样热心新手的人......:)


你设置的方式并不完全是这样UIPageViewController works.

首先要明白的是setViewControllers:direction:animated:completion仅设置visible视图控制器,而不是您可能希望向用户显示的所有视图控制器。 (也就是说,如果我尝试像您的代码中那样设置三个控制器的数组,则会出现异常。)

其次,如果您有多个可见页面(或两个,取决于书脊位置),您must实施UIPageViewControllerDataSource协议提供页面视图控制器将显示的视图控制器。

这是一个简短的示例(作为子类实现UIPageViewController,但也可以与子页面视图控制器一起使用...只需替换self.dataSource = ... with myPageViewController.dataSource = ...)

@implementation MyPageViewController {
    // we keep our page view controllers in an array, but we could just as easily
    // instantiate them on the fly in the data source methods
    NSArray *_pages;
}

- (void)setupPages {
    /*
     * set up three pages, each with a different background color
     */
    UIViewController *a = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    a.view.backgroundColor = [UIColor redColor];
    UIViewController *b = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    b.view.backgroundColor = [UIColor greenColor];
    UIViewController *c = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    c.view.backgroundColor = [UIColor blueColor];
    _pages = @[a, b, c];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupPages];
    self.dataSource = self;
    // set the initially visible page's view controller... if you don't do this
    // you won't see anything.
    [self setViewControllers:@[_pages[0]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {
    }];
}

#pragma mark - UIPageViewControllerDataSource

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    if (nil == viewController) {
        return _pages[0];
    }
    NSInteger idx = [_pages indexOfObject:viewController];
    NSParameterAssert(idx != NSNotFound);
    if (idx >= [_pages count] - 1) {
        // we're at the end of the _pages array
        return nil;
    }
    // return the next page's view controller
    return _pages[idx + 1];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    if (nil == viewController) {
        return _pages[0];
    }
    NSInteger idx = [_pages indexOfObject:viewController];
    NSParameterAssert(idx != NSNotFound);
    if (idx <= 0) {
        // we're at the end of the _pages array
        return nil;
    }
    // return the previous page's view controller
    return _pages[idx - 1];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iOS 5 中向 UIPageViewController 添加页面数组? 的相关文章

  • iOS Storyboards 我应该使用它们吗? [复制]

    这个问题在这里已经有答案了 我是 iOS 开发新手 尚未创建应用程序 但我向我的朋友寻求建议 他在市场上拥有非常高评价的应用程序 他说不要使用故事板 尽管我很想听取他的建议 但它们似乎确实很有帮助 这是否会在将来给我的应用程序带来问题 我有
  • 我什么时候应该对 IBOutlet 使用弱或强限定符? [复制]

    这个问题在这里已经有答案了 可能的重复 ARC 下 IBOutlets 应该强还是弱 https stackoverflow com questions 7678469 should iboutlets be strong or weak
  • iPhone UI 带有 Tableview 或 Scrollview? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我的自定义类没有出现在 Interface Builder 的下拉列表中?

    我正在使用 Interface Builder 和 Storyboards 来构建我的应用程序 我正在尝试将我的源代码连接到我的UIViewController在 Storyboard 中 但我的类都没有显示在 自定义类 下拉菜单中 这种情
  • CSS3 属性 webkit-overflow-scrolling:touch 错误

    iOS 5 发布了网页设计师的新属性 webkit overflow scrolling touch它使用 iOS 设备硬件加速器为可滚动 div 提供本机滚动 当在我们的开发网站上实施时 它确实有效 但效果不佳 我相信可能存在 CSS 问
  • 在 UIPageViewController 中跟踪页面索引的可靠方法 - Swift

    我在位于常规 UIViewController 中的容器内有一个 UIPageViewController 自定义 我需要能够在每次页面更改时调用一个事件 但前提是它确实发生了变化 而不仅仅是一半或类似的事情 using func page
  • 如何在HTTP post中向PHP服务器发送多个参数

    我正在将 base64 字符串发送到 php 服务器 并且运行良好 现在我想以字符串形式发送另一个参数 谁能告诉我下面的代码中需要添加什么代码 下面的代码适用于单个参数 我们如何修改它的多个参数 NSData data UIImageJPE
  • 如何本地化 iOS 故事板

    我有一个包含一些视图的 iPhone 故事板 例如 导航项标题名为News 应翻译为其他语言 当我向故事板添加新的本地化版本时 它会为新语言创建当前故事板的副本 在这里我可以更改导航项的标题 但对我来说它似乎不太有用 如果我的故事板包含 1
  • 从 Plist 中存储和检索 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 在 plist 文件中存储两个 NSMutableArray https stackoverflow com questions 6070568 ios store two nsmutable
  • 将子视图发送到后面

    我正在尝试模仿 facebook ios 侧面菜单并让它工作 但是我遇到的问题是我无法将侧面菜单发送到后面 正如另一个问题中所讨论的那样使用 Objective C 的 iphone facebook 侧边菜单 https stackove
  • ContainerView 的 NSInvalidUnarchiveOperationException

    使用带有嵌入转场的容器视图 我得到这个 由于未捕获的异常 NSInvalidUnarchiveOperationException 而终止应用程序 原因 无法实例化名为 UIStoryboardEmbedSegueTemplate 的类 我
  • 在显示选项卡栏控制器之前启动登录视图

    我有一个使用故事板开发的 ios5 应用程序 当前在初始启动时显示选项卡栏控制器视图 我想在显示选项卡栏控制器之前显示登录屏幕 用户输入用户名和密码 系统将验证用户身份 如果成功 则显示选项卡栏控制器 我尝试了以下 3 个选项 但没有成功
  • iOS 5:UIImagePickerController 崩溃

    我面临的问题是UIImagePickerController在 iOS 5 中 我的应用程序开发于iOS4 3但现在我将其升级为iOS5 当我尝试从照片库中选择图像时 我的应用程序崩溃了 它在 main m 文件中崩溃EXE BAD ACC
  • 如何检查 NSMutableArray 的某个索引处是否存在对象?

    例如 我如何验证索引 3 处是否存在某个项目 中的对象NSArray从类 Animal 实例化 好吧 自从NSMutableArray必须保存非零对象 只要数组足够大 你知道有某物在索引处i if myArray count gt 3 id
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 将数据保存到 iOS 的最佳方式?

    在我的应用程序 iOS 5 中 我想保存数据 我想节省债务 所以就是 加或减钱 金额 以及有债务的人的姓名 或您有债务的人的姓名 但我不知道如何保存数据 NSUserdefaults Core data SQLite 也许你可以告诉我拯救他
  • 新的 XCode 模板等效项

    我正在学习 iPhone 的 Objective C 目前最大的障碍是大多数旧教程都不是基于 ios5 的 一般来说 这很好 因为在 ios5 被采用之前我还不想使用故事板 所以如果我忽略垃圾收集指令 教程就很好 然而 我遇到的问题是 大多
  • Xcode:UIPickerView 更改单个行背景颜色

    我有一个包含 3 个组件 或列 的 UIPickerView 每列都有不同数量的行或项目 我需要能够设置每一行的背景颜色 我做了一些挖掘 发现了一些几乎可以工作的东西 但不完全是我需要的 UIView pickerView UIPicker
  • 如何在第二个 ViewCcontroller 中使用第一个 ViewController 的解析元素?

    在我的应用程序中我发送一个GET到我的服务器并收到一些响应 我有来自主视图控制器类的 TavleView 和 TableViewController 类 我在主 ViewController 中进行解析 我想用从第一个 ViewContro
  • 使用导航控制器在 Storyboard 中呈现视图控制器 - Swift

    我目前在下面的新故事板中显示了一个 viewController var storyboard UIStoryboard UIStoryboard name AccountStoryboard bundle nil var vc Welco

随机推荐

  • GeoViews:将 matplotlib 样式参数应用于多边形元素

    已安装的软件包 Holoviews 1 14 4 geoviews 1 9 1 matplotlib 3 4 2 我正在尝试做什么 我正在尝试使用简单的每个功能样式GeoViews和绘图库后端 我不知道如何应用不同的edgecolor 参数
  • 如何使用矢量化代码求解许多超定线性方程组?

    我需要求解线性方程组 Lx b 其中 x 始终是向量 3x1 数组 L 是 Nx3 数组 b 是 Nx1 向量 N 通常范围从 4 到 10 左右 使用以下方法解决这个问题没有问题 scipy linalg lstsq L b 然而 我需要
  • 是否可以使用 div 作为 Twitter Popover 的内容

    我正在使用 twitter 的 bootstrap 弹出窗口here 现在 当我滚动弹出窗口文本时 会出现一个弹出窗口 其中仅包含来自 a s data content属性 我想知道是否有办法放一个 div 在弹出窗口内 潜在地 我想在那里
  • 如何指示网络浏览器不缓存页面?

    我的 Internet Explorer 6 0 遇到缓存问题 我想指示浏览器not缓存他请求的页面 更多信息 在我的页面中 有一个随机令牌 可以防止重新加载网站并发布相同的信息两次或更多次 如果您现在将此页面添加为书签 则每次浏览器请求时
  • Python的break函数在true时不会结束

    为什么中断不会在 true 时结束并返回到开始处 while True print This is a quiz print What is your name Name input print Hello Name The quiz wi
  • JTextArea 只能包含数字,但允许负值

    我有一个 JTextArea 只需要接受数字 这是我的代码 DocumentFilter onlyNumberFilter new AxisJTextFilter final JTextArea areaTextoXMin new JTex
  • 在 C++ 中读取 Fortran 二进制文件

    读取 使用 C 程序 由 Fortran 代码生成的二进制文件的问题已被多次询问 并且已经给出了 Fortran 记录中约定的令人满意的描述 例如http local wasp uwa edu au pbourke dataformats
  • 在 CI 中加载页眉和页脚视图

    有没有办法在不调用的情况下加载视图 页眉 页脚 this gt load gt view header or this gt load gt view footer 在每个控制器中 也许是一个可以在每个视图中使用的模板 以下是一些帮助您入门
  • SSL 主机名匹配如何在 JWS 上工作?

    当使用 Android 版 Google SafetyNet 时 文档建议您 验证 SSL 证书链并使用 SSL 主机名匹配 确保叶子认证是问题attest android com 现在这是如何运作的 我假设我收到 JWS 消息检查证书和签
  • 无法从 docker 访问 jupyter 笔记本

    我正在尝试运行在 Docker 中创建的 jupyter 笔记本 首先我运行一个容器 docker run p 8888 8888 jupyter tensorflow notebook 我得到的是 I 19 44 47 140 Noteb
  • 如果我关闭 wifi,则无法让 ionic 应用程序工作(在开发过程中)

    因此 在开发时 我关闭了 wifi 然后 ionic 应用程序无法在 Android 设备 模拟器中工作 但是当我关闭 wifi 时 Android 应用程序的已发布和签名的 apk 文件工作得很好 问题是我需要我的应用程序在互联网连接关闭
  • 本地数据缓存同步不会将客户端更改保存到 sdf 文件

    我创建了一个新的 c 项目 并按照本教程中的步骤创建了 LocalDate 缓存 我接下来添加了以下代码 using System using System Collections Generic using System Componen
  • d3:仅线性插值足够接近的点

    假设我有一个具有相应日期的值数组 date d1 value v1 date dn value vn 我想使用 d3 js 进行可视化 只要后续测量在一定的时间范围内 例如相隔不超过一周 我就很高兴在测量之间插入 d3 但是 当后续记录相距
  • 奇怪的 strtok 行为

    char line 255 char token NULL char line2 NULL char temporaryToken NULL if scanf n line gt 0 token strtok line divide the
  • 在默认日历中添加特定日期作为事件

    我是 iPhone 开发新手 我的应用程序中有一个要求 其中有一个网络服务链接 如下所示 http 01s in webservices sikhcalendar getData php db table cal 所以我想要链接中显示的特定
  • 如何将类构造函数的“this”绑定到外部对象

    我正在寻找一种使用类似的方法Function apply对于类 以便this执行的构造函数的属性是外部对象 通过一个功能我可以简单地使用apply function Bar this value value const proxy Bar
  • 如何垂直连接多个结构结果?

    如果我有结构数组并使用矩阵索引访问它 我会得到多个 anses gt gt a struct a 0x0 struct array with no fields gt gt a 1 f1 1 2 a f1 2x1 double gt gt
  • 自动化 Excel 时如何将文本框对象放置在特定单元格上?

    我们正在使用 VB Net 自动化 Excel 并尝试在 Excel 工作表上放置多行文本 并将其设置为不打印 在这些之间我们会有可打印的报告 如果我们添加文本框对象并将打印对象设置设置为 false 则可以做到这一点 如果您有其他方法 请
  • xsd中key的正确使用方法

    我正在为我正在从事的项目编写 XSD 架构 下面的架构是我从微软示例中获取的 并稍加修改 我试图使用 key 和 keyref 为一组项目声明一个唯一的键 然后在另一部分中引用该键 我很长一段时间都无法让它工作 我将编写架构并设置一个测试文
  • 如何在 iOS 5 中向 UIPageViewController 添加页面数组?

    有谁知道我缺少什么才能将我自己的视图控制器手动添加到 UIPageViewController 方法中 我目前有这个 我不知道如何继续 NSDictionary pageViewOptions NSDictionary dictionary