2011-12-27 12 views
0

UIPageViewControllerの各ページにどのように表示することができますか?最初のpdfはone.pdf、2番目はtwo.pdfなどとしましょう。 ..UIPageViewController - 各ページに異なるWebviewが表示されます

私はこれを行うための最善の方法は、カスタムのViewControllerのサブクラスを作成することですXcodeの4.2でUIPageViewController

+0

http://www.techotopia.com/index.php/An_Example_iOS_5_iPhone_UIPageViewController_Application – xGoPox

答えて

3

を使用しています。

@interface WebViewController : UIViewController 

- (id)initWithURL:(NSURL *)url frame:(CGRect)frame; 

@property (retain) NSURL *url; 

@end 

この例では、WebViewControllerクラスを呼び出して、カスタム初期化メソッドを与えました。 (URLを保持するプロパティも与えられます)。 (あなたも必要になります覚えて

- (id)initWithURL:(NSURL *)url frame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.url = url; 
    } 
    return self; 
} 

:あなたの実装で最初

あなたはあなたがメソッドinitを作成するには、このような何かを行う必要があり、実装にもで、そのプロパティ

@implementation WebViewController 

@synthesize url = _url; 

を合成する必要がありますARCを使用しない場合):

- (void)dealloc { 
    self.url = nil; 
    [super dealloc]; 
} 

持っている:

- (void)loadView { 
    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
    [self.view addSubview:webView]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:self.url]; 
    [webView loadRequest:request]; 
    [webView release]; // remove this line if using ARC 

    // EDIT :You could add buttons that will be on all the controllers (pages) here 
    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [button1 addTarget:self action:@selector(buttonTap) forControlEvents: UIControlEventTouchUpInside]; 
    [self.view addSubview:button1]; 
} 

はまた、あなたが、あなたはの線に沿って何かをする必要がありますUIPageViewControllerを持っているあなたのメインコントローラでは、この方法

- (void)buttonTap { 
    // Do something when the button is tapped 
} 

// END EDIT 

を実装する必要があります覚えている:

NSMutableArray *controllerArray = [NSMutableArray array]; 
for (NSUInteger i = 0; i < urlArray.count; i++) { 
    WebViewController *webViewController = [[WebViewController alloc] initWithURL:[urlArray objectAtIndex:i]]; 
    [controllerArray addObject:webViewController]; 
// EDIT: If you wanted different button on each controller (page) then you could add then here 
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button1 addTarget:self action:@selector(buttonTap) forControlEvents: UIControlEventTouchUpInside]; 
[webViewController.view addSubview:button1]; 
// In this case you will need to put the "buttonTap" method on this controller NOT on the webViewController. So that you can handle the buttons differently from each controller. 
// END EDIT 

[webViewController release]; // remove this if using ARC 
} 
pageViewController.viewControllers = controllerArray; 

基本的には、表示するページごとにWebViewControllerクラスのインスタンスを作成し、それらをすべてあなたのためのviewControllersの配列として追加しましたUIPageViewControllerの間をページングします。

urlArrayはロードするすべてのページのNSURLオブジェクトを含む有効なNSArrayであり、UIPageViewControllerを作成してビュー階層に追加したとすると、これはトリックを行う必要があります。もしあれば、これはあなたが任意の明確化や更なるサポートが必要な場合、私に知らせて、助け

希望:)

+0

あなたはこれらのビューにボタンを追加することができますしたかった? – TheChes44

+0

絶対に、コントローラーに追加してください。コントローラー自体の中で、それぞれを同じにしたい場合はどちらかです。または、コントローラを作成するとき。ちょうどこれを含める答えを更新する。 –

+0

が更新され、2箇所にボタンが追加されています。おそらく両方で行う必要はありません。しかし、あなたはボタンが必要なものに依存するかもしれません? –

関連する問題