我有名为 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以便您也可以通过视图控制器或其他多种方式。但是在执行此操作之前,请仔细考虑为什么要从视图访问控制器的逻辑,并查看是否有其他方法可以执行此操作。

10-01 16:23
查看更多