0

我想知道如何从位于 xib 中的另一个类对象访问位于我的 File's Owner 类中的属性。

我的 xib 的文件所有者是具有属性 x 的 ViewController。

UIView 在 xib 文件中,是一个名为 CustomUIView 的子类。

如何从 CustomUIView 类中访问位于视图控制器中的属性 x?

我不想创建 File's Owner 对象的新实例(或者我?),我觉得这只会创建它的新实例而不使用实例化的实例(父级或 CustomUIVIew?)。

我是不是很困惑,需要重新审视 iOS 开发的一些基本原则?(我是游戏新手)

4

1 回答 1

1

向视图添加一个指向视图控制器的属性。

@interface CustomUIView
...
@property (nonatomic, weak) IBOutlet ViewController *viewController;
...
@end

将此插座连接到 Interface Builder 中的视图控制器。

现在您可以从您的视图中访问它:

self.viewController.x

然而,这是一个相当“落后”的设计,我认为可能有更好的方法来实现你想要的。通常视图不应该直接访问数据(甚至控制器)。相反,它应该具有一组足以表示或呈现视图负责的任何内容的属性。

在您的情况下,您可以将该属性添加x到您的视图中。每当您的模型(x您的视图控制器的)更改时,您都会更新视图。如果您需要收到有关视图更改的通知,您可以覆盖视图中的设置器。

@interface CustomUIView
@property (nonatomic, strong) NSObject *x;
...
@end

@implementation CustomUIView
- (void)setX:(NSObject *)x {
    if (_x != x) {
        _x = x;
        // x was changed, do anything you need to update the view here
        // like calling [self setNeedsDisplay] to redraw the view.
    }
}
...
@end
于 2013-05-15T21:36:18.213 回答