2012-04-26 13 views
0

新しいxcodeのページベースのアプリケーションを、単一のビューアプリケーションを使用するだけで適応させるブックアプリケーションを作成しようとするのは初めてです。目的C:別のページに画像を追加する

このコードが見つかりました。この作品のHTMLコンテンツをUIImageViewに置き換えようとしていますが、失敗しました。

- (void) createContentPages 
{ 
    NSMutableArray *pageStrings = [[NSMutableArray alloc] init]; 
    for (int i = 1; i < 11; i++) 
    { 
     NSString *contentString = [[NSString alloc] 
            initWithFormat:@"<html><head></head><body><h1>Chapter %d</h1><p>This is the page %d of content displayed using UIPageViewController in iOS 5.</p></body></html>", i, i]; 
     [pageStrings addObject:contentString]; 
    } 
    pageContent = [[NSArray alloc] initWithArray:pageStrings]; 
} 

私はページごとに異なる画像を表示しようとしています。

ここは私がしたものです。

- (void) createContentPages 
{ 
    NSMutableArray *pageStrings = [[NSMutableArray alloc] init]; 
    for (int i = 1; i < 11; i++) 
    { 
     NSArray *photos = [[NSArray arrayWithObjects: 
         [UIImage imageNamed:@"p1.png"], 
         [UIImage imageNamed:@"p2.png"], 
         [UIImage imageNamed:@"p3.png"], 
         [UIImage imageNamed:@"p4.png"], 
         nil]; 
     [pageStrings addObject:photos]; 
    } 
    pageContent = [[NSArray alloc] initWithArray:pageStrings]; 
} 

(私は私はちょうどそれを試してみましたので、間違っている知っている)、それは各ページでのUIWebViewを持っています。私はUIImageViewと置き換えて実行することは可能ですか?サブクラス

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [webView loadHTMLString:dataObject 
        baseURL:[NSURL URLWithString:@""]]; 
} 
+0

ARCを使用していますか? – CarlJ

答えて

0

いつでもHTMLタグ<IMG>を使ってHTMLページ内の画像を使用することができます。したがって、UIImageViewを使用する理由はありません。

0

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self createContentPages]; 
    NSDictionary *options = 
    [NSDictionary dictionaryWithObject: 
    [NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin] 
           forKey: UIPageViewControllerOptionSpineLocationKey]; 

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

    pageController.dataSource = self; 
    [[pageController view] setFrame:[[self view] bounds]]; 

    contentViewController *initialViewController = 
    [self viewControllerAtIndex:0]; 
    NSArray *viewControllers = 
    [NSArray arrayWithObject:initialViewController]; 

    [pageController setViewControllers:viewControllers 
          direction:UIPageViewControllerNavigationDirectionForward 
           animated:NO 
          completion:nil]; 

    [self addChildViewController:pageController]; 
    [[self view] addSubview:[pageController view]]; 
    [pageController didMoveToParentViewController:self]; 
} 

- (contentViewController *)viewControllerAtIndex:(NSUInteger)index 
{ 
    // Return the data view controller for the given index. 
    if (([self.pageContent count] == 0) || 
     (index >= [self.pageContent count])) { 
     return nil; 
    } 

    // Create a new view controller and pass suitable data. 
    contentViewController *dataViewController = 
    [[contentViewController alloc] 
    initWithNibName:@"contentViewController" 
    bundle:nil]; 
    dataViewController.dataObject = 
    [self.pageContent objectAtIndex:index]; 
    return dataViewController; 
} 

- (NSUInteger)indexOfViewController:(contentViewController *)viewController 
{ 
    return [self.pageContent indexOfObject:viewController.dataObject]; 
} 

- (UIViewController *)pageViewController: 
(UIPageViewController *)pageViewController viewControllerBeforeViewController: 
(UIViewController *)viewController 
{ 
    NSUInteger index = [self indexOfViewController: 
         (contentViewController *)viewController]; 
    if ((index == 0) || (index == NSNotFound)) { 
     return nil; 
    } 

    index--; 
    return [self viewControllerAtIndex:index]; 
} 

- (UIViewController *)pageViewController: 
(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = [self indexOfViewController: 
         (contentViewController *)viewController]; 
    if (index == NSNotFound) { 
     return nil; 
    } 

    index++; 
    if (index == [self.pageContent count]) { 
     return nil; 
    } 
    return [self viewControllerAtIndex:index]; 
} 

はあなたが置くことができるものを表していないだけで(この一つの小さな変化にUIImageをごcreateContentPages()メソッドを使用します。ここでは

は、コードの残りの部分ですUIImageViewを使用する必要があります)。

- (void) createContentPages 
{ 
    NSMutableArray *pageStrings = [[NSMutableArray alloc] init]; 
    for (int i = 1; i < 11; i++) 
    { 
     NSArray *photos = [[NSArray arrayWithObjects: 
         [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"p1.png"] autorelease], 
         [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"p2.png"] autorelease], 
         [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"p3.png"] autorelease], 
         [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"p4.png"] autorelease], 
         nil]; 
     [pageStrings addObject:photos]; 
    } 
    pageContent = [[NSArray alloc] initWithArray:pageStrings]; 
} 

nメインコントローラのコード(投稿したコードの大きなブロック)を使用します。

変更する必要があるのは、「サブクラス」と呼ばれるものだけです。 (実際には、実際のページを表示するUIPageViewControllerです)。

そのUIPageViewControllerで "webView"(UIWebView)を削除します。これはおそらく.xibファイルで行われます(コードに追加されていないように見えます)。その後UIPageViewControllerは次のようになりviewWillAppearで、作る:トリックを行う必要があります

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    self.view = dataObject; 

} 

を。基本的には、UIWebViewを使用してHTMLデータを表示するのではなく、dataObject(UIImageView)をUIPageViewControllerのサブビューとして追加するだけです。お役に立てれば!

+0

はい!あれは! 1つのUIWebView。 – SeongHo

+0

貼り付けページのメソッドを貼り付けてください –

+0

あなたが行く、私は残りのコードを掲載してください。私はちょうどそれをどこかに見つけて、それを長い間勉強しようとしています。 – SeongHo

関連する問題