2011-06-26 3 views
0

Lors de l'appel de [polygonShapeView setNeedsDisplay]; ma méthode polygonShapeView drawRect n'est PAS appelée. Je suis capable de faire polygonShapeView.hidden = YES, ce qui fonctionne bien donc j'ai une bonne référence à la vue et ai branché mon outlet. Des idées?setNeedsAffiche ne pas mettre à jour l'interface

Controller.h

#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 
#import "PolygonShape.h" 
#import "PolygonShapeView.h" 

@interface Controller : NSObject { 
    IBOutlet UIButton *decreaseButton; 
    IBOutlet UIButton *increaseButton; 
    IBOutlet UILabel *numberOfSidesLabel; 
    IBOutlet PolygonShape *polygonShape; 
    IBOutlet PolygonShapeView *polygonShapeView; 
    IBOutlet UILabel *polygonLabel; 
} 
- (IBAction)decrease:(id)sender; 
- (IBAction)increase:(id)sender; 
- (void)awakeFromNib; 
- (void)updateInterface; 
@end 

Controller.m

// 
// Controller.m 
// 
// Created by Chris Muench on 6/24/11. 
// Copyright 2011 N/A. All rights reserved. 
// 

#import "Controller.h" 

@implementation Controller 
- (IBAction)decrease:(id)sender 
{ 
    [polygonShape setNumberOfSides:numberOfSidesLabel.text.integerValue - 1]; 
    [self updateInterface]; 
} 

- (IBAction)increase:(id)sender 
{ 
    [polygonShape setNumberOfSides:numberOfSidesLabel.text.integerValue + 1]; 
    [self updateInterface]; 
} 

- (void)awakeFromNib 
{ 
    polygonShape = [[PolygonShape alloc] initWithNumberOfSides:numberOfSidesLabel.text.integerValue minimumNumberOfSides:3 maximumNumberOfSides:12]; 
    [self updateInterface]; 
} 
- (void)updateInterface 
{ 
    [polygonShapeView setNeedsDisplay]; 
    numberOfSidesLabel.text = [NSString stringWithFormat:@"%d",polygonShape.numberOfSides]; 
    polygonLabel.text = polygonShape.name; 

    if (polygonShape.numberOfSides == polygonShape.maximumNumberOfSides) 
    { 
     increaseButton.enabled = NO; 
    } 
    else 
    { 
     increaseButton.enabled = YES; 
    } 

    if(polygonShape.numberOfSides == polygonShape.minimumNumberOfSides) 
    { 
     decreaseButton.enabled = NO; 
    } 
    else 
    { 
     decreaseButton.enabled = YES; 
    } 
} 
@end 

Répondre

1

je ne peux que deviner , mais il semble que votre polygonShapeView n'est pas lié en aucune façon à la polygonShape. Donc, il pourrait dessiner, mais pas en fonction des données que vous attendez.

Je pense qu'il devrait y avoir quelque chose comme polygonShapeView.shape = polygonShape; dans awakeFromNib, ou dans updateInterface.

+0

Il s'est avéré que je faisais un nouveau polygonShape dans le awakeFromNib au lieu d'utiliser celui que j'avais créé à l'intérieur de la plume, ce qui n'a rien changé vraiment. –

+0

Exactement, donc * pas connecté *. :) – Eiko