【发布时间】:2017-09-18 08:43:47
【问题描述】:
我有三个UIViewcontroller,分别是ViewController、BViewController和CViewController,ViewController是UINavigationController中的RootViewController,
我正在通过按钮操作从 ViewController -> BViewController -> CViewController 推送。
我已经在 CViewController 中声明了协议。这个协议方法在 BViewController 上运行良好,但我不明白如何在 ViewController 中使用它的委托方法。
我在 View Controller 中创建了一个 CViewController 对象,然后为该委托声明了 self,虽然它不起作用,下面是我的代码。请帮我。我在这里做错了!
我的根视图控制器,即ViewController
#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");
}
还有我的第三个 View Controller,我在 .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];
}
【问题讨论】:
标签: ios objective-c iphone uiviewcontroller delegates