我特别擅长iOS编程和MVC编程。
我有一个项目,它为多个子类使用单个nib(最初为nib创建的所有基类)。 nib只包含存储在IBOutlet连接中的按钮集合。我希望按钮在单击时显示和执行不同的操作,具体取决于引用nib的子类。
比如说,我有一个名为BaseClassViewController的基类,带有一个具有一个属性的nib BaseClassViewController.xib
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttonCollection
现在我有一个名为SubClassViewController的子类,它是基类的子类。
我的问题是,如果我调用SubClassViewController [super initWithNibName:@“BaseClassViewController”bundle:nil]的实例,则会加载右边的nib。我是否还继承了基类的IBOutletCollection属性以及集合与基类的.xib之间的所有连接?
如果没有,有没有办法为单个xib执行此操作而不在子类中创建新属性并重新建立与子类的xib的连接?在这个简化的例子中,这似乎打败了继承的目的。
我的最终目标是在应用程序的不同阶段点击按钮时执行不同的操作。我想到的一种可能性是在单个视图控制器中创建某种属性,以确定点击将执行的操作,例如:
-(IBAction) buttonClicked:(UIButton)sender{
if([modeString isEqualToString:@"Mode1"]){
\\Do something
}
...
}
但这对组织不友好,我想为每个子类视图控制器提供其他方法。除了子类化之外,还有更好的方法吗?我应该为每个子类只有一个不同的笔尖,即使它们对于每个子类都是相同的吗?我应该做点什么吗?