关于objC中的设计模式的新手问题。
我正在为我的iPhone应用程序编写功能,我也打算在其他应用程序中使用该功能。该功能是通过两个类(Viewcontroller1和Viewcontroller2)编写的。 Viewcontroller1是导航控制器的根视图,它可以推送Viewcontroller2。该应用程序的其余部分将仅使用ViewController1,并且永远不会直接访问Viewcontroller2。但是,触发了
根据用户事件,Viewcontroller2必须向
该应用程序的其余部分。
我的问题是实现这一目标的最佳方法是什么?
当前,我使用两个级别的委派从Viewcontroller2发送消息。首先将其发送到Viewcontroller1,然后让Viewcontroller1将其发送到应用程序的其余部分或应用程序委托。所以我的代码看起来像-
//Viewcontroller1.h
@protocol bellDelegate
-(int)bellRang:(int)size;
@end
@interface Viewcontroller1 : UITableViewController <dummydelegate> {
id <bellDelegate> delegate;
@end
//Viewcontroller1.m
@implementation Viewcontroller1
-(void)viewDidLoad {
//some stuff here
Viewcontroller2 *vc2 = [[Viewcontroller2 alloc] init];
vc2.delegate = self;
[self.navigationController pushViewController:vc2
animated:YES];
}
-(int)dummyBell:(int)size {
return([self.delegate bellRang:size]);
}
//Viewcontroller2.h
@protocol dummyDelegate
-(int)dummyBell:(int)size;
@end
@interface Viewcontroller2 : UITableViewController {
id <dummyDelegate> delegate;
@end
//Viewcontroller2.m
@implementation Viewcontroller2
-(int)eventFoo:(int)size {
rval = [self.delegate dummyBell:size];
}
@end
最佳答案
那是做事的正确方法!如果要在viewController2上调用所有委托方法,则可能只有一个协议,并且直接将委托从viewController1分配给viewControler2,但这会阻止您第一次需要从viewControler1调用委托。