Lvalue需要作为赋值的左操作数

时间:2010-01-04 10:02:00

标签: iphone objective-c properties

你好我在xcode中得到了“Lvalue required as assignment openg of assignment”错误。为什么? 这是我的代码(window1 / 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];
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:15)

部分self.window2.view.frame将为您留下一个吸气剂,而不会实际进入并抓取内部框架CGRect。您需要做的是让CGRect更改它,然后将其重新设置到视图中。

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

答案 1 :(得分:2)

您必须将框架设置为一个整体:

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

self.window2.view.frame = f;

请参阅properties

答案 2 :(得分:0)

这是一种先进的(或实验 ...);你应该明白这个问题,并以常规的方式(àlaepatel)做一遍,直到你有

但是我有macro可以让你这样做

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