从 UIViewController 向 UIView 发送数据?
Send data TO UIView FROM UIViewController?
非常大的困惑我无法解决...
我可能对一些基本的东西感到困惑..但我就是不能说清楚
这里有两件事
- UIViewController
- UIViewController 中的 UIView 对象
这是我所做的:
1)创建一个Single View的项目->从故事板,我把UIView拖到UIViewController上
2) new->file to create myUIViewClass.h and myUIViewClass.m 这是 UIView 的子类。
3) 将我拖出来的UIView的"Custom Class"赋值给myUIViewClass
4) 回到 UIViewController,按住 control 并拖动 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
}
好迷茫!
您只需要做以下事情:
- (void)viewDidLoad {
[super viewDidLoad]; //dont forget this
self.uiview.arrayInsideUIView = @[@"one", @"two"];
}
因为视图与情节提要挂钩,情节提要会处理视图的创建,因此无需 alloc/init 自己动手。
如果你自己分配初始化它(你目前正在做的),你正在替换故事板设置的那个,所以你必须自己从头开始完全设置它(框架位置等)这可能不是什么你要。
非常大的困惑我无法解决...
我可能对一些基本的东西感到困惑..但我就是不能说清楚
这里有两件事
- UIViewController
- UIViewController 中的 UIView 对象
这是我所做的:
1)创建一个Single View的项目->从故事板,我把UIView拖到UIViewController上
2) new->file to create myUIViewClass.h and myUIViewClass.m 这是 UIView 的子类。
3) 将我拖出来的UIView的"Custom Class"赋值给myUIViewClass
4) 回到 UIViewController,按住 control 并拖动 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
}
好迷茫!
您只需要做以下事情:
- (void)viewDidLoad {
[super viewDidLoad]; //dont forget this
self.uiview.arrayInsideUIView = @[@"one", @"two"];
}
因为视图与情节提要挂钩,情节提要会处理视图的创建,因此无需 alloc/init 自己动手。
如果你自己分配初始化它(你目前正在做的),你正在替换故事板设置的那个,所以你必须自己从头开始完全设置它(框架位置等)这可能不是什么你要。