如何将UIView与从ViewController继承的属性或变量一起使用?

时间:2015-04-14 11:00:46

标签: ios objective-c uiview uiviewcontroller

UIViewController名为 ParentViewController.h 和.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

1 个答案:

答案 0 :(得分:1)

关于这个问题有几个答案,但是总结一下,你没有,至少不是你这样做的方式。 UIView无法访问他们的视图控制器,也不应该需要访问。当然,在现实世界中,有时候围绕独立视图进行编码的开销是不值得的,因此人们无法访问控制器访问权限。这可以通过在视图中保留实例变量,指向控制器,在加载视图后为其分配引用,或者通过覆盖init以便也传递视图控制器或许多其他方式来完成。但在此之前,请考虑一下您从视图中访问控制器的原因,看看是否有不同的方法来实现它。