Ios 在ViewController之前编译的自定义类
我需要一些代码方面的帮助。我想创建一个自定义条形图。我做了所有的编码。当我在自定义类视图中创建对象时,它就像一个符咒。但是,我想让它变得通用。我想在ViewController中创建它。我还在故事板中添加了一个视图,并将类名更改为我的自定义类名 当我这样尝试时,它不起作用Ios 在ViewController之前编译的自定义类,ios,objective-c,class,storyboard,Ios,Objective C,Class,Storyboard,我需要一些代码方面的帮助。我想创建一个自定义条形图。我做了所有的编码。当我在自定义类视图中创建对象时,它就像一个符咒。但是,我想让它变得通用。我想在ViewController中创建它。我还在故事板中添加了一个视图,并将类名更改为我的自定义类名 当我这样尝试时,它不起作用 @implementation ViewController -(void)viewDidLoad { [super viewDidLoad]; GCBarGraphRow *first = [[GCBarGr
@implementation ViewController
-(void)viewDidLoad {
[super viewDidLoad];
GCBarGraphRow *first = [[GCBarGraphRow alloc]init];
first.backgroundColor = [UIColor redColor];
first.value = 20;
GCBarGraphRow *second = [[GCBarGraphRow alloc]init];
second.backgroundColor = [UIColor brownColor];
second.value = 40;
GCBarGraphColumn *container = [[GCBarGraphColumn alloc]init];
container.values = @[first,second];
NSLog(@"View Controller %@",container.values);
self.myGraph.array = container;
}
但是,当我尝试在自定义视图类中创建它时,它就起作用了
@implementation GCBarGraphView
-(id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
barNumber = [array.values count];
//NSLog(@"%@",array.values);
showDifference = NO;
showShadow = NO;
gradientColor = NO;
drawBaseLine = YES;
[self baseClassInit];
}
return self;
}
-(void)baseClassInit {
GCBarGraphRow *first = [[GCBarGraphRow alloc]init];
first.backgroundColor = [UIColor redColor];
first.value = 20;
GCBarGraphRow *second = [[GCBarGraphRow alloc]init];
second.backgroundColor = [UIColor brownColor];
second.value = 40;
GCBarGraphColumn *container = [[GCBarGraphColumn alloc]init];
container.values = @[first,second];
}
如果要在序列图像板中创建视图并将其类指定给
CGBarGraphRow
,则还需要创建视图控制器的出口
然后,您不必从视图控制器代码手动初始化它。将自动调用构造函数initWithCoder
更新:
试试这个。在情节提要中,创建以下内容:
-UIView具有适当的框架,并将自定义类指定给CGBarGraphView
-在该视图中再插入两个,并将它们的类分配给GCBarGraphRow
在CGBarGraphView
类中创建两个插座,并将它们绑定到故事板中的正确视图:
@property (nonatomic, weak) IBOutlet GCBarGraphRow *row1;
@property (nonatomic, weak) IBOutlet GCBarGraphRow *row2;
删除上面视图控制器的代码-不需要。在CGBarGraphView
code:
-(id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
}
return self;
}
-(void)viewDidLoad {
GCBarGraphColumn *container = [[GCBarGraphColumn alloc]init];
container.values = @[self.row1,self.row2];
... whatever else you need to initialize
}
我有GCBarGraphColum,它包含NSArray,数组的元素是GCBarGraphRow。因此,我必须在GCBarGraphView中使用这些,然而,当我通过在故事板中设置GCBarGraphView来初始化ViewController中的这些时,我的自定义类已经启动。但我猜这是因为它有一个与编码器。我如何修复它?你是否在情节提要中创建了这3个GCBarGraphView?不,我没有。问题是GCBarGraphView,它扩展了UIView,并假设绘制图形需要包含GCBarGraphRow的GCBarGraphColumn。但是,它没有初始化,因为GCBarGraphView是在ViewController之前编译的。