UIPageViewControlerDataSource和UiWebView用于在页面上显示

时间:2013-02-02 11:30:47

标签: ios objective-c uiwebview uipageviewcontroller ibooks

我想使用UIPageViewControllerUIWebView开发一个ePub阅读器应用程序来显示书页。所以我可以通过使用JavaScript字符串执行偏移来创建不同章节的页面。

问题是如何以正确的方式实施UIPageViewControlerDataSource delegate?当我准备一些页面进行展示时,我应该使用UIWebView方法和UIWebView delegate方法,这些方法仅在屏幕上显示webView时才有效。 我尝试在webView下创建基础pageViewController,以便将微积分与ePub章节分页相关联,但我无法在页面上拖动加载的内容。

有谁知道它是如何在iBooks或相同的应用程序中实现的?

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案可能是:

  • 子类UIPageViewController,使其符合UIPageViewControllerDataSourceUIWebViewDelegate协议,并将self设置为-viewDidLoad覆盖
  • 中的数据源
  • 实施pageViewController:viewControllerAfterViewController:pageViewController:viewControllerBeforeViewController:(UIPageViewControllerDataSource协议方法),以便他们返回包含显示您数据的UIViewController的新UIWebView

    - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
    {
        UIViewController *vc = [[UIViewController alloc] init];
        UIWebView *webview = [[UIWebView alloc] init];
        webview.delegate = self;
    
        // Here you can call - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
        // to load your web page as you need
    
        vc.view = webview;
    
        return vc;
    }
    

当然你必须完成代码存根。您应该设置一种机制来区分viewControllers以便能够返回下一页和上一页(即我使用UIPageViewController子类声明pageNumber属性,但我确信有更优雅的方法来执行它..)