5 votes

Valeur L requise comme opérande gauche de l'affectation

Bonjour, je reçois l'erreur "Lvalue required as left operand of assignment" dans xcode. Pourquoi ? Voici mon code (window1/2 sont des 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];
}

Merci pour votre aide.

15voto

epatel Points 32451

La partie self.window2.view.frame vous laissera avec un getter, sans pour autant atteindre et en s'emparant de le cadre interne CGRect . Ce que vous devez faire, c'est obtenir le CGRect le modifier, puis le remettre dans la vue.

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

2voto

Gregory Pakosz Points 35546

Vous devez définir le cadre dans son ensemble :

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

self.window2.view.frame = f;

Voir propriétés .

0voto

Clay Bridges Points 3470

C'est un peu avancé (ou expérimental ...) ; vous devriez comprendre ce problème, et le faire de la manière habituelle (à la épatel ) plusieurs fois jusqu'à ce que vous l'ayez froid .

Mais j'ai un macro qui vous permet de faire ceci

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X