我有名为 ParentViewController.h的UIViewController
。和.m
然后,我在 ParentViewController 中添加了UIView
。
我添加了 uiview.h 和 uiview.h ,并将其分配给 ParentViewController 中的UIView
。
从
-(void)drawRect:(CGRect)rect {}
它位于uiview.m中,我需要访问ParentViewController内部的属性。
我该怎么做呢?我使用
UIView
错误吗?ParentViewController.h
#import <UIKit/UIKit.h>
@interface ParentViewController : UIViewController
//I want my uiview to access this variable.
@property (nonatomic, strong) NSMutableArray *usedByUIView;
@end
ParentViewController.m
#import "ParentViewController.h"
#import "uiview.h"
@implementation ParentViewController
- (void)viewDidLoad {
...
}
@end
uiview.h
#import <UIKit/UIKit.h>
@interface uiview : UIView
@end
uiview.m
#import "uiview.h"
@implementation uiview
-(id) initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self){
}
return self;
}
- (void)drawRect:(CGRect)rect {
NSLog(@"start drawing using the data from usedByUIView");
}
@end
最佳答案
关于这个问题,有一些答案,但总结一下,您没有,至少没有做到的方式。 UIView不能访问其视图控制器,也不应该访问。当然,在现实世界中,有时不值得围绕独立视图进行编码的开销,因此人们会侵入对控制器访问的访问。这可以通过以下方法完成:将实例变量保留在视图中,指向控制器,并在视图加载后为其分配一个引用,或者通过覆盖init以便您也可以通过视图控制器或其他多种方式。但是在执行此操作之前,请仔细考虑为什么要从视图访问控制器的逻辑,并查看是否有其他方法可以执行此操作。