2010-01-04 19 views
5

Xin chào tôi nhận được lỗi "Giá trị được yêu cầu dưới dạng toán hạng trái của bài tập" trong xcode. Tại sao? Đây là mã của tôi (window1/2 là UIViewController):Lvalue được yêu cầu như toán hạng bên trái của bài tập

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

Cảm ơn sự giúp đỡ của bạn.

Trả lời

15

Phần self.window2.view.frame sẽ để lại cho bạn bộ thu gọn, không thực sự tiếp cận và lấy khung nội bộ CGRect. Những gì bạn cần làm là nhận được CGRect thay đổi nó và sau đó đặt nó trở lại vào xem.

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

không anh cần phải khởi tạo quan điểm điều khiển Tweet và thông tin không? – ennuikiller

+1

@ennuikiller Đúng, nhưng đó là một vấn đề khác. Tôi chỉ trả lời về vấn đề Lvalue – epatel

2

Bạn cần phải thiết lập các khung như một toàn thể:

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

self.window2.view.frame = f; 

Xem properties.

0

Đây là loại nâng cao (hoặc thử nghiệm ...); bạn nên hiểu vấn đề này, và làm theo cách thông thường (à la epatel) một bó cho đến khi bạn có nó lạnh.

Nhưng tôi có một macro cho phép bạn làm điều này

@morph(self.window2.view.frame, _.origin.x = 320); 
    [contentView addSubview:self.window2.view]; 
Các vấn đề liên quan