2010-01-04 58 views
5

的左操作您好,我得到了“左值要求作为分配的左操作数”在Xcode错误。为什么? 这里是我的代码(窗口1/2的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]; 
} 

感谢您的帮助。

回答

15

的部分self.window2.view.frame你会留下一个getter,没有真正深入到和抓住内部框架CGRect。你需要做的是让CGRect改变它,然后将其放回到视图中。

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

没有他需要初始化鸣叫和信息视图控制器呢? – ennuikiller 2010-01-04 10:10:04

+1

@ennuikiller确实,但那是另一个问题。我只是在回答左值问题 – epatel 2010-01-04 10:11:36

2

你必须设置帧作为一个整体:

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

self.window2.view.frame = f; 

properties

0

这是一种先进的(或实验 ...);直到你拥有它你应该明白这个问题,并做到这一点的常规方式(点菜epatel)一堆。

但是我有一个macro,可以让你做到这一点

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