views:

470

answers:

2

Hello I get the "Lvalue required as left operand of assignment" error in xcode. Why? Here is my code (window1/2 are UIViewController) :

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

Thanks for your help.

+7  A: 

The part self.window2.view.frame will leave you with a getter, not actually reaching into and grabbing the internal frame CGRect. What you need to do is get the CGRect change it and then set it back into the view.

CGRect f = self.window2.view.frame; // calls the getter
f.origin.x = 320;
self.window2.view.frame = f; // calls the setter
epatel
doesn't he need to initialize the Tweet and Info view controllers as well?
ennuikiller
@ennuikiller True, but that is another problem. I'm only answering about the Lvalue problem
epatel
+1  A: 

You have to set the frame as a whole:

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

self.window2.view.frame = f;

See properties.

Gregory Pakosz