Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在ViewController之前编译的自定义类_Ios_Objective C_Class_Storyboard - Fatal编程技术网

Ios 在ViewController之前编译的自定义类

Ios 在ViewController之前编译的自定义类,ios,objective-c,class,storyboard,Ios,Objective C,Class,Storyboard,我需要一些代码方面的帮助。我想创建一个自定义条形图。我做了所有的编码。当我在自定义类视图中创建对象时,它就像一个符咒。但是,我想让它变得通用。我想在ViewController中创建它。我还在故事板中添加了一个视图,并将类名更改为我的自定义类名 当我这样尝试时,它不起作用 @implementation ViewController -(void)viewDidLoad { [super viewDidLoad]; GCBarGraphRow *first = [[GCBarGr

我需要一些代码方面的帮助。我想创建一个自定义条形图。我做了所有的编码。当我在自定义类视图中创建对象时,它就像一个符咒。但是,我想让它变得通用。我想在ViewController中创建它。我还在故事板中添加了一个视图,并将类名更改为我的自定义类名

当我这样尝试时,它不起作用

@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之前编译的。