2010-01-04 14 views
5

Ciao, ottengo l'errore "Lvalue richiesto come operando a sinistra di assegnazione" in xcode. Perché? Ecco il mio codice (window1/2 sono UIViewController):Lvalue richiesto come operando a sinistra dell'assegnazione

- (void)loadView 
{ 

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,460)]; 
    UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0,0,640,460)]; 


    self.window1 = [TweetViewController alloc]; 
    self.window2 = [InfoViewController alloc]; 


    [contentView addSubview:self.window1.view]; 
    self.window2.view.frame.origin.x = 320; //HERE IS THE ERROR!! 
    [contentView addSubview:self.window2.view]; 


    [scrollView addSubview:contentView]; 
    scrollView.contentSize = contentView.frame.size; 


    scrollView.pagingEnabled = YES; 


    self.view = scrollView; 


    [contentView release]; 
    [scrollView release]; 
} 

Grazie per il vostro aiuto.

risposta

15

La parte self.window2.view.frame vi lascerà con un getter, in realtà non raggiungendo in e afferrando la cornice interna CGRect. Quello che devi fare è ottenere il CGRect cambiarlo e quindi reinserirlo nella vista.

CGRect f = self.window2.view.frame; // calls the getter 
f.origin.x = 320; 
self.window2.view.frame = f; // calls the setter 
+1

non ha bisogno di inizializzare la vista controllori Tweet e informazioni così? – ennuikiller

+1

@ennuikiller Vero, ma questo è un altro problema. Sto solo rispondendo del problema di Lvalue – epatel

2

è necessario impostare il telaio nel suo complesso:

CGRect f = self.window2.view.frame; 
f.origin.x = 320; 

self.window2.view.frame = f; 

Vedi properties.

0

Questo è un tipo di avanzato (o sperimentale ...); dovresti capire questo problema e farlo regolarmente (à la epatel) un po 'fino a quando non lo hai freddo.

Ma ho un macro che ti permette di fare questo

@morph(self.window2.view.frame, _.origin.x = 320); 
    [contentView addSubview:self.window2.view];