Я создал пользовательский UIView (ProgressView), где я рисую форму, импортированную с помощью StyleKit из PaintCode.Как изменить переменную пользовательского UIView из ViewController
Ниже приведены коды. Я объявил свойство переменной экземпляра в своем пользовательском UIView, и когда я пытаюсь изменить свойство из ViewController, оно не работает.
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
* Посмотреть 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
Вы создали новый просмотр прогресса в viewDidLoad, но не добавили его в свою иерархию представлений, чтобы он не был виден. И эта ссылка хранится в локальной переменной, поэтому она будет выпущена, как только эта необходимость выйдет. Если у вас есть другой экземпляр на экране через экран раскадровки, вы должны настроить свойство IBOutlet, чтобы вы могли обновить * тот * экземпляр – Paulw11
Я не уверен на 100%, но я не думаю, что вы можете использовать «новое» в качестве имени переменной , Возможно, ключевое слово в объективе-c, и если я не думаю, что это хорошее имя переменной в любом случае :) – Yan
Нет причин, по которым вы не можете установить значение из метода IBAction. Возможно, покажите этот код. – Paulw11