J'ai créé un UIView personnalisé (ProgressView) où je dessine une forme importée via StyleKit à partir de PaintCode.Comment faire pour modifier la variable de UIView personnalisé de ViewController
Voici les codes. J'ai déclaré la propriété de variable d'instance dans mon UIView personnalisé et quand j'essaye de changer la propriété de ViewController, cela ne fonctionne pas.
ProgressView.h
#import <UIKit/UIKit.h>
@interface ProogressView : UIView
@property (nonatomic) float daysFraction;
@property (nonatomic) float pagesFraction;
@end
ProgressView.m
#import "ProgressView.h"
#import "StyleKitName.h"
#import "ViewController.h"
@implementation ProgressView
@synthesize daysFraction = _daysFraction;
@synthesize pagesFraction = _pagesFraction;
- (void)drawRect:(CGRect)rect {
// Drawing code
[StyleKitName drawCanvas1WithDaysFraction:self.daysFraction pageFraction:self.pagesFraction];
}
-(void)awakeFromNib {
[super awakeFromNib];
self.pagesFraction = 0;
self.daysFraction = 0;
}
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
* Voir Controller.m **
#import "ViewController.h"
#import "ButtonAnimation.h"
#import "ProgressView.h"
#import "StyleKitName.h"
@interface ViewController()
@property (weak, nonatomic) IBOutlet ButtonAnimation *buttonView;
@property (weak, nonatomic) IBOutlet UIButton *actionButton;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
ProgressView *new =[[ ProgressView alloc]init];
new.daysFraction = 0.7f; // here I am setting value to variable in custom view ProgressView but not working.
}
- (IBAction)animateTheButton:(id)sender {
self.buttonView.layer.backgroundColor = [UIColor clearColor].CGColor;
[self.buttonView addErrorAnimation];
}
@end
Vous avez créé une nouvelle vue de progression dans viewDidLoad mais vous ne l'avez pas ajoutée à votre hiérarchie de vue afin qu'elle ne soit pas visible. Et la référence est stockée dans une variable locale afin qu'elle soit libérée dès que ce besoin se termine. Si vous avez une autre instance à l'écran via votre écran de storyboard, vous devez configurer une propriété IBOutlet pour pouvoir mettre à jour * cette * instance – Paulw11
Je ne suis pas sûr à 100% mais je ne pense pas que vous pouvez utiliser "new" comme nom de variable . C'est possible un mot-clé dans l'objectif-c et sinon je ne pense pas que c'est un bon nom de variable dans tous les cas :) – Yan
Il n'y a aucune raison pour laquelle vous ne pouvez pas définir la valeur d'une méthode IBAction. Peut-être montrer ce code. – Paulw11