標籤:
第一步:聲明協議 在RootView.h中, @protocol 協議名 <基類> 方法 @end@protocol RootViewDelegate <NSObject>- (void)presentToViewController;@end
第二步:聲明代理人 在RootView.h中//必須是assign,為了防止兩個對象之間的循環參考@property (nonatomic, assign)id<RootViewDelegate>rootDelegate;(屬性)。。。。@end
第三步:執行協議方法在RootView.m中- (void)buttonAction:(UIButton *)button{
//協議第三步:執行協議方法
[self.rootDelegate presentToViewController];}
第四步:簽訂協議在 RootViewController.m中人//協議第四步:簽訂協議@interface RootViewController ()<RootViewDelegate,UINavigationControllerDelegate,UIImagePickerControllerDelegate>(屬性)。。。。@end
第五步:設定代理人在 RootViewController.m中人- (void)viewDidLoad { [super viewDidLoad]; self.rootV = [[RootView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.view addSubview: self.rootV]; [_rootV release]; //協議第五步:設定代理人
self.rootV.rootDelegate = self;
}
第六步:實現協議方法在 RootViewController.m中人//協議第六步:實現協議方法
- (void)presentToViewController{ //下一個頁面:模態 FirstViewController *firstVC = [[FirstViewController alloc] init]; [self presentViewController:firstVC animated:YES completion:^{ }]; NSLog(@"aaaaa");} /** 總結協議/代理模式
1.什麼情況下用協議?
第一個類裡建立了第二個類對象,並給第二個對象傳值 當第二個類的對象要想控制第一個類裡的方法,或者給第一個類傳值,必須用協議 */
iOS 協議delegate分六步