按下按钮,我正在尝试将数据从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
日志。
答案 0 :(得分:1)
主要的错误是你自己创建了CollectionViewController
,但你不应该。您想要的CollectionViewController由Storyboard自动实例化。如何找到这个视图控制器?
1 - 在FooViewController中的segue期间抓住它:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
CollectionViewController *collectionViewController =(CollectionViewController *) segue.destinationViewController;
collectionViewController.deligate = self;
}
2 - 在FooViewController中的子视图控制器中找到它
self.childViewControllers
对你有帮助吗?