2010-01-04 30 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]; 
相關問題