我在一些UIViewControllers上使用了一组协议。有没有办法在设置协议时设置在所有这些代码上运行的默认代码。还有一种方法让它们像UIViewController生命周期一样工作,例如当UIViewController加载它时呢?
- (void)viewWillLoad;
- (void(viewDidLoad;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)anmated;
答案 0 :(得分:1)
要在设置属性时运行代码(我假设这是你的意思吗?),你可以覆盖合成的setter方法
@synthesize value = _value;
- (void)setMyProperty:(id <MyProtocol>)value {
if (value != value) {
_value = value;
// Insert your code here
...
}
}
如果您希望所有视图控制器的行为方式相同,则可以提供UIViewController的公共子类,即
@interface AbstractViewController : UIViewController {
...
}
然后,所有'真正'的视图控制器都将继承,而不是直接来自UIViewController:
@interface MainViewController : AbstractViewController { ... }
@interface DetailsViewController : AbstractViewController { ... }
如果您将属性(以及重写的setter方法)添加到抽象视图控制器,那么所有真实视图控制器都将免费获得该功能。
我希望这有帮助。如果不是,请在您的问题中添加更多信息,我们可以再试一次:)