我有三個的UIViewController,即視圖控制器,BViewController和CViewController,視圖控制器是RootViewController的距離的UINavigationController,協議/委託不工作
我是從推的ViewController - > BViewController - > CViewController,通過按鈕操作。
我已經在CViewController中聲明瞭協議。這個協議方法對BViewController工作正常,但我不明白如何在ViewController中使其委託方法工作。
我已經在View Controller中創建了CViewController對象,然後爲該代理聲明瞭自己,儘管它不工作,下面是我的代碼。請幫幫我。我在這裏做錯了!
我的根視圖控制器,即視圖控制器
#import "ViewController.h"
#import "BViewController.h"
#import "CViewController.h"
@interface ViewController()<testDelegates>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
CViewController *cVC = [self.storyboard instantiateViewControllerWithIdentifier:@"CViewController"];
cVC.mydelegate = self;
}
- (IBAction)nextAction:(id)sender {
BViewController *bViewC = [self.storyboard instantiateViewControllerWithIdentifier:@"BViewController"];
[self.navigationController pushViewController:bViewC animated:YES];
}
-(void)TestMethod{
NSLog(@" Its NOT Working");
}
我的第二個視圖控制器,即BViewController
#import "BViewController.h"
#import "CViewController.h"
@interface BViewController()<testDelegates>
@end
@implementation BViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)bNextAction:(id)sender {
CViewController *cVC = [self.storyboard instantiateViewControllerWithIdentifier:@"CViewController"];
// cVC.mydelegate = self;
[self.navigationController pushViewController:cVC animated:YES];
}
-(void)TestMethod{
NSLog(@" Its Working If I uncomment to cVC.mydelegate = self");
}
我的第三個視圖控制器,在這裏我聲明在協議。 h文件,即CViewController
#import <UIKit/UIKit.h>
@protocol testDelegates <NSObject>
-(void)TestMethod;
@end
@interface CViewController : UIViewController
@property (weak) id <testDelegates> mydelegate;
@end
而在.m文件
#import "CViewController.h"
@interface CViewController()
@end
@implementation CViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)cNextAction:(id)sender {
[self.mydelegate TestMethod];
}
是的,你得到了,我必須從CViewController執行一些操作到ViewController,在你的代碼中,在這一行[delegate conformsToProtocol:testDelegates]中,「testDelegates」變成紅色標記並且使用未聲明的標識符。 :( –
對不起,我已經修改回答 – Sergey
完美,完美工作..謝謝:) –