setNeedsDisplay не обновляет интерфейс - PullRequest
1 голос
/ 27 июня 2011

При вызове [polygonShapeView setNeedsDisplay];мой метод drawRect polygonShapeView НЕ вызывается.Я могу сделать polygonShapeView.hidden = YES, который работает нормально, поэтому у меня есть хорошая ссылка на представление и я подключил свою розетку.Есть идеи?

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

1 Ответ

2 голосов
/ 27 июня 2011

Я могу только угадать , но, похоже, ваш polygonShapeView никак не связан с polygonShape. Так что это может нарисовать, но не в соответствии с данными, которые вы ожидаете.

Я думаю, что должно быть что-то вроде polygonShapeView.shape = polygonShape; в awakeFromNib или в updateInterface.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...