非常大的困惑我无法解决任何问题......
我可能会对一些基本的东西感到困惑..但我不能直截了当
这里有两件事
以下是我的所作所为:
1)创建单视图项目 - >从故事板中,我将UIView拖到了UIViewController
上2)new->文件创建myUIViewClass.h和myUIViewClass.m,它是UIView的子类。
3)分配"自定义类" UIView,我拖出来,到myUIViewClass
4)回到UIViewController,控制+将UIView拖到我的myUIViewController.h并将其作为这样的出口:
myUIViewController.h
#import <UIKit/UIKit.h>
#import "myUIViewClass.h"
@interface myUIViewController : UIViewController
@property (strong, nonatomic) IBOutlet myUIViewClass *uiview;
@end
4)在myUIViewClass.h中创建属性,它将直接绘制到UIView:
myUIViewClass.h
#import <Foundation/Foundation.h>
@interface myUIViewClass : NSObject
//I want to use this array in - (void)drawRect:(CGRect)rect {} method.
@property (nonatomic, strong) NSArray *arrayInsideUIView;
@end
4)在myUIViewClass.m中,因为它是UIView的子类,所以在我运行项目时会调用这行代码:
myUIViewClass.m
- (void)drawRect:(CGRect)rect {
NSLog(@"drawing starts");
}
5)现在,我想要这样:
- (void)drawRect:(CGRect)rect {
NSLog(@"data to draw with: %@", _arrayInsideUIView);
}
6)但在此之前,我需要填充_arrayInsideUIView。我想从myUIViewController.m
这样做7)我该怎么做?
不对1:
myUIViewController.m
- (void)viewDidLoad {
_uiview = [UIView alloc] init];
_uiview.arrayInsideUIView = @[@"one", @"two"];
//the array is not inside UIView, but inside myUIViewClass
}
不对2:
myUIViewController.m
- (void)viewDidLoad {
_uiview = [[myUIViewClass alloc] init];
[self.view addSubview: _uiview];
//this creates duplicate UIView's
}
不对3:
myUIViewController.m
- (void)viewDidLoad {
myUIViewClass *uiviewclass = [[myUIViewClass alloc] init];
uiviewclass.arrayInsideUIView = @[@"one", @"two"];
//No UIView gets created here
}
太困惑了!
答案 0 :(得分:3)
您需要做的就是以下内容:
- (void)viewDidLoad {
[super viewDidLoad]; //dont forget this
self.uiview.arrayInsideUIView = @[@"one", @"two"];
}
因为视图连接到故事板,故事板处理视图的创建,所以不需要自己分配/初始化它。
如果你自己分配init(你当前正在做),那么你要替换故事板设置的那个,所以必须自己从头开始完全设置它(帧位置等),这可能不是你想要的