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

标签 ios objective-c uiview uiviewcontroller

我有 UIViewController 命名为 ParentViewController.h 和 .m

然后我在这个 ParentViewController 中添加了 UIView

我在 ParentViewController 中添加了 uiview.huiview.h 并将其分配给 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 无权访问其 View Controller ,因此不需要访问权限。当然,在现实世界中,有时围绕独立 View 进行编码的开销是不值得的,因此人们会侵入 Controller 访问权限。这可以通过在 View 中保留一个实例变量,指向 Controller ,并在 View 加载后分配对它的引用,或者通过覆盖 init 以便您也传递一个 View Controller ,或许多其他方式来完成。但在这样做之前,请仔细考虑为什么要从 View 访问 Controller 的逻辑,看看是否有其他方法可以做到这一点。

关于ios - 如何将 UIView 与从 ViewController 继承的属性或变量一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625662/

相关文章:

iphone - 如何在 init 方法中更改 nib uiimageview 图像?

ios - XCode - 指向接口(interface) 'NSTimer' 的指针的算术,对于该架构和平台来说,该指针的大小不是恒定的

ios - 使用FastLane自动化iOS应用

iphone - 如何检查 iOS 设备是否设置为 "do not disturb"?

ios - 通过外观代理设置 UIBarButtonItem 的文本颜色

ios - 如何将数据从一个 UIView 传递到子 UIView?

iphone - 两个 UIView 之外的最小矩形 - Objective C

ios - 自定义绘图在退出之前不可见

objective-c - 如何从 MP MediaPlayer ViewController 显示歌曲标题、持续时间

ios - sqlite 函数从阿拉伯文文本中删除重音 iOS xcode