在按下按钮时,我正在尝试将数据从Collection View Controller发送到我的View Controller。这是我到目前为止:
#import <UIKit/UIKit.h>
@class CollectionViewController;
@protocol CollectionViewDelegate <NSObject>
-(void) sendTest;
@end
@interface CollectionViewController : UICollectionViewController
@property (nonatomic, weak) id<CollectionViewDelegate> deligate;
@end
-(void) viewDidLoad {
[super viewDidLoad];
}
...
NSLog(@"check");
[self.deligate sendTest];
NSLog(@"called");
#import "CollectionViewController.h"
@interface FooViewController () <CollectionViewDelegate> {}
@end
@implementation FooViewController
- (void)viewDidLoad {
[super viewDidLoad];
CollectionViewController *controler = [[CollectionViewController alloc] init];
controler.deligate = self;
}
- (void) sendTest {
NSLog(@"Delegates are great!");
}
不幸的是,当我打电话给[self.deligate sendTest];
时没有任何反应。我知道它被称为,因为我得到了check
,called
日志。
主要的错误是你自己创造了一个CollectionViewController
,但你不应该。您想要的CollectionViewController由Storyboard自动实例化。如何找到这个视图控制器?
1 - 在Foot ViewController中的segue期间捕获它:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
CollectionViewController *collectionViewController =(CollectionViewController *) segue.destinationViewController;
collectionViewController.deligate = self;
}
2 - 在FooViewController中的子视图控制器中找到它
self.childViewControllers
它对你有帮助吗?