使用可重用代码将App Delegate添加到多个View Controller

时间:2015-07-09 20:17:33

标签: ios objective-c uiviewcontroller delegates

编辑:我从那时起就知道我所做的是非常非常糟糕的设计。不要做我做的事。相反,请考虑阅读MVC works的方法,并制作适当的课程。不要将控制器替换为对象。

我不确定我是否正确地使用我的架构,但我正在做的是在每个视图控制器中声明一个app委托,然后让app为每个视图控制器委派自己的视图控制器委托

每次创建新的视图控制器时,我最终都会向每个视图控制器添加相同的三行,并为应用委托添加另一个视图控制器。有没有更简单的方法来继承(I.E.给所有视图控制器一个appDelegate属性,然后在一些父函数中分配它)。

以下是我目前正在做的事情:

//AppDelegate.h
@interface AppDelegate

@property (strong, nonatomic) MyViewController* myViewDelegate;
@property (strong, nonatomic) MySecondViewController* mySecondViewDelegate;

@end

//MyViewController.m
@interface MyViewController ()

@property (strong,nonatomic) AppDelegate* appDelegate;

@end
@implementation MyViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.appDelegate = (AppDelegate*) [UIApplication sharedApplication].delegate;
    self.appDelegate.myViewDelegate = self; //MySecondViewController would use:
    //self.appDelegate.mySecondViewDelegate = self;
}
...

所以有两件事:

  1. 我没有真正看到在app delegate中声明新视图控制器的方法,而没有使用在segues上分配的单个根控制器,但是有多个视图控制器委托,比如我首先认为设计不佳?
  2. 我需要一种方法让ViewDidLoad调用父ViewDidLoad来设置app delegate属性的值,以及该appate委托的声明。

0 个答案:

没有答案