2012-04-24 7 views
7

Ho iniziato dal modello di applicazione standard basato su PageView fornito da Apple. Ora invece del testo voglio che le pagine nell'app mostrino le immagini. Un array è creato come segue:Ottenere la matrice di immagini in UIImageView (in UIPageViewController)

_pageData = [[NSArray alloc] initWithObjects: 
       [UIImage imageNamed:@"1.png"], 
       [UIImage imageNamed:@"2.png"], 
       [UIImage imageNamed:@"3.png"], 
       nil]; 

Questo array viene gestito nel modo seguente:

DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 
dataViewController.dataObject = [self.pageData objectAtIndex:index]; 
return dataViewController; 

Poi, in DataViewController.h:

@interface DataViewController : UIViewController 

@property (strong, nonatomic) IBOutlet UIImageView *imageView; 
@property (strong, nonatomic) UIImage *dataObject; 

E in DataViewController.m io' m cercando di visualizzare le immagini in de imageView nel seguente modo:

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

    self.imageView = [[UIImageView alloc] initWithImage:_dataObject]; 

    NSLog(@"dataObject %@", _dataObject); 

    } 

Tuttavia, con questo codice non riesco a ottenere le immagini sul PageViewController. Qualche idea su come potrei farlo funzionare correttamente?

Un grande grazie per l'aiuto!

risposta

5

Qui

self.imageView = [[UIImageView alloc] initWithImage:_dataObject]; 

si sta creando un nuovo UIImageView che penzolava arround inutilizzato, invisibile e senza un genitore. È necessario impostare la sua dimensione in qualche modo e metterlo in una vista genitore con un

[<parent> addSubview:self.imageView] 

di mostrarlo.

Se l'UIImageView originale viene letto da un file di risorse (presumo perché si tratta di un'IBOutlet), basta fare un

self.imageView.image = _dataObject 

e questo dovrebbe fare il lavoro al posto.

+0

Sì! Lavori. Molte grazie. – user1048042

+0

Quale variante usi ora? Quello in alto potrebbe creare un sacco di UIImageViews ed è utile per comprendere il problema, ma non come una vera implementazione. – Christoph

+0

Utilizzo di quest'ultimo: self.imageView.image = _dataObject – user1048042

3

questo ha lavorato per me

NSArray *anArray = [NSArray arrayWithObjects: 
         [UIImage imageNamed:@"transparente.png"], 
         [UIImage imageNamed:@"21001.jpg"], 
         [UIImage imageNamed:@"21002.jpg"], 
         [UIImage imageNamed:@"21003.jpg"], 
         [UIImage imageNamed:@"21004.jpg"], 
         [UIImage imageNamed:@"transparente2.png"], 
         nil]; 

    _pageData = [anArray copy]; 

e nel dataViewController

- (void)viewWillAppear:(BOOL)animated { 
[super viewWillAppear:animated]; 
self.pageImage.image = self.dataObject; 
} 

Il pageimage è un UIImageView con un'IBOutlet.

Problemi correlati