使用委托将数据从Collection View Controller传递到View Controller

问题描述 投票:0回答:1

在按下按钮时,我正在尝试将数据从Collection View Controller发送到我的View Controller。这是我到目前为止:

CollectionViewController.h

#import <UIKit/UIKit.h>

@class CollectionViewController;

@protocol CollectionViewDelegate <NSObject>

-(void) sendTest;

@end
@interface CollectionViewController : UICollectionViewController

@property (nonatomic, weak) id<CollectionViewDelegate> deligate;

@end

CollectionViewController.m

-(void) viewDidLoad {
  [super viewDidLoad];
}

...

NSLog(@"check");
[self.deligate sendTest];
NSLog(@"called");

FooViewController.m

#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];时没有任何反应。我知道它被称为,因为我得到了checkcalled日志。

ios objective-c uicollectionview delegates viewcontroller
1个回答
1
投票

主要的错误是你自己创造了一个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

它对你有帮助吗?

© www.soinside.com 2019 - 2024. All rights reserved.