在超类中创建一个公共出口变量

时间:2014-02-04 06:48:53

标签: iphone objective-c

是否可以在子类中定义子类可以覆盖的插座?

例如,我有以下观点:

@interface ParentView
@view

@interface FirstChildView : ParentView
@view

@interface SecondChildView : ParentView
@view

以及以下控制器:

@interface ParentController
// ???
@end

@interface FirstChildController : ParentController
@property (strong, nonatomic) IBOutlet FirstChildView *myView;
@end

@interface SecondChildController : ParentController
@property (strong, nonatomic) IBOutlet SecondChildView *myView;
@end

是否可以在ParentController中定义一个插座,作为FirstChildController和SecondChildController下myView的“父”插座?

2 个答案:

答案 0 :(得分:0)

但是你为什么要这样做......你可以像下面这样做。

@interface ParentController

@property (strong, nonatomic) IBOutlet ParentView *myView;

@end

@interface FirstChildController : ParentController

//Assign it from your code/outlet for First Child view.
//Like self.myView = <FirstChildView>
@end

@interface SecondChildController : ParentController

//Assign it from your code/outlet for Second Child view.
//Like self.myView = <SecondChildView>

@end

您可以通过类型转换来使用子类属性。

答案 1 :(得分:0)

谢谢大家回答我的问题。以下是我最终的目的:

@interface ParentController
@property (strong, nonatomic) UIView *myView;
@end


@interface FirstChildController : ParentController

- (UIView *) myView
{
    return self.myFirstChildView;
}

@property (strong, nonatomic) IBOutlet FirstChildView *myFirstChildView;
@end


@interface SecondChildController : ParentController

- (UIView *) myView
{
    return self.mySecondChildView;
}

@property (strong, nonatomic) IBOutlet SecondChildView *mySecondChildView;
@end

因此,如果我有一个使用FirstChildController的场景,ParentController中的'self.myView'将引用'myFirstChildView'。