我想使用UIPageViewController
和UIWebView
开发一个ePub阅读器应用程序来显示书页。所以我可以通过使用JavaScript字符串执行偏移来创建不同章节的页面。
问题是如何以正确的方式实施UIPageViewControlerDataSource delegate
?当我准备一些页面进行展示时,我应该使用UIWebView
方法和UIWebView delegate
方法,这些方法仅在屏幕上显示webView
时才有效。
我尝试在webView
下创建基础pageViewController
,以便将微积分与ePub章节分页相关联,但我无法在页面上拖动加载的内容。
有谁知道它是如何在iBooks或相同的应用程序中实现的?
答案 0 :(得分:1)
一个简单的解决方案可能是:
UIPageViewController
,使其符合UIPageViewControllerDataSource
和UIWebViewDelegate
协议,并将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
属性,但我确信有更优雅的方法来执行它..)