2010-01-04 12 views
5

Hola obtengo el error "Lvalue requerido como operand izquierdo de asignación" en xcode. ¿Por qué? Aquí está mi código (window1/2 son UIViewController):Lvalue requerido como operando izquierdo de la asignación

- (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]; 
} 

Gracias por su ayuda.

Respuesta

15

La parte self.window2.view.frame le dejará con un captador, en realidad no llegar a la entrada ya la agarrando el marco interno CGRect. Lo que necesita hacer es obtener el CGRect cambiarlo y luego configurarlo en la vista.

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

no se necesita para inicializar los controladores de vista Tweet e información, así? – ennuikiller

+1

@ennuikiller Cierto, pero ese es otro problema. Solo estoy respondiendo sobre el problema de Lvalue – epatel

2

usted tiene que fijar el marco en su conjunto:

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

self.window2.view.frame = f; 

Ver properties.

0

Esto es un poco avanzado (o experimental ...); debe comprender este problema y hacerlo de la manera habitual (à la epatel) un montón hasta que lo tenga frío.

Pero tengo una macro que le permite hacer esto

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