2013-02-02 2 views
0

도서 페이지를 표시하기 위해 UIPageViewControllerUIWebView을 사용하는 ePub 판독기 응용 프로그램을 개발하고 싶습니다. 그래서 JavaScript-strings로 오프셋을 수행하여 다른 챕터의 페이지를 만들 수 있습니다.UIPageViewControlerDataSource 및 UiWebView 페이지에 표시하기

질문은 올바른 방법으로 UIPageViewControlerDataSource delegate을 어떻게 구현할 수 있습니까? 게재를 위해 페이지를 준비 할 때 UIWebView 메쏘드를 사용해야하고 이 화면에있는 경우에만 작동하는 UIWebView delegate 메쏘드를 사용해야합니다. pageViewController 아래에서 webView을 기반으로 ePub 챕터 페이징과 연결된 미적분을 만들려고했으나 페이지에로드 된 콘텐츠를 드래그 할 수 없습니다.

누구든지 iBooks 또는 동일한 앱에서 어떻게 구현되는지 알고 있습니까?

답변

1

하나 쉬운 해결책이 될 수있다 :

  • 서브 클래스 UIPageViewController
  • pageViewController:viewControllerAfterViewController:pageViewController:viewControllerBeforeViewController: (UIPageViewControllerDataSource 프로토콜 방법)을 구현하는 -viewDidLoad 재정에 데이터 소스로 self을가 UIPageViewControllerDataSourceUIWebViewDelegate 프로토콜을 준수하고 설정 때문에 데이터를 표시하는 UIWebView이 포함 된 새로운 UIViewController을 반환합니다. 물론

- (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를 구별하는 메커니즘을 설정해야합니다. 즉, pageNumber 속성을 선언하는 UIPageViewController 하위 클래스를 사용하여 수행합니다. 그러나 더 효율적인 방법이 있습니다.)

+0

하지만 Apple의 UIPageViewController 클래스 참조에서이 행은 무엇입니까? "이 클래스는 서브 클래스로 만들 수 없습니다." ? – x401om

+0

죄송합니다, UIPageViewController가 아니라 "UIViewController subclass"를 의미합니다 (현재 답변에서 수정 됨). 어쨌든, iOS 6 문서로 인용 한 문장은 다음과 같습니다 : '이 클래스는 일반적으로 그대로 사용되지만 iOS 6 이상에서는 서브 클래 싱 될 수 있습니다.'- 더 부드러운 정책 .. 일반적으로, 내가 이해하는 한, 이것은 대개 하위 클래스에서 컨트롤러의 기본 동작을 변경하지 말아야한다는 것을 의미합니다. –

+0

아, 아뇨 다시 미안 해요. UIPageViewController를 서브 클래 싱하려는 것이 었습니다. :) 그래서 이전 코멘트의 나머지 부분이 의심 스러울 것입니다. –