gpt4 book ai didi

iphone - 在 iOS 上,当 ViewController 的 View 设置为我的 UIView 子类时,为什么不存在这样的属性?

转载 作者:行者123 更新时间:2023-11-28 20:35:17 24 4
gpt4 key购买 nike

如果一个子类定义为 MyViewUIView 的子类,并且在 Interface Builder 中,单击 View ,并且自定义类已经设置为 我的 View

但是在ViewController的viewDidLoad中,

 self.view.foo = ... ;

将创建一个编译错误,提示 foo 不是 UIView 的属性。然后我打印出 self.view 的类:

NSLog(@"Class of view is %@", NSStringFromClass([self.view class]));

果然,它打印出 MyView。此外,不仅第一行不会编译,Xcode 也不会“自动完成”单词“foo”。但很明显,该类打印出的不是 UIView,而是 MyView,在我的 MyView 类定义中,我确实说过:

@property (nonatomic, strong) NSMutableArray *foo;

在接口(interface).h文件中,也在实现.m文件中:

@synthesize foo;

MyView.h 也被导入到 ViewController.h 中。为什么会这样以及如何解决这个问题?

最佳答案

您的 UIViewController 不知道它的 View 是您的 MyView 子类的一个实例。

你需要施放它

MyView *myView = (MyView *)self.view;
myView.foo = @"Whatever";

如果你想简化这个,你也可以子类化 UIViewController 然后总是在你的 MyViewController 子类中引用 self.myView 而不是 self.view:

@interface MyViewController : UIViewController

@property (nonatomic, strong) MyView *myView;

@end


@implementation MyViewController
@synthesize myView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.myView = (MyView *)self.view;
}
return self;
}
@end

关于iphone - 在 iOS 上,当 ViewController 的 View 设置为我的 UIView 子类时,为什么不存在这样的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com