UIViewController 控制器无法识别委托

Posted

技术标签:

【中文标题】UIViewController 控制器无法识别委托【英文标题】:UIViewController controller not recognizing delegate 【发布时间】:2013-01-09 22:36:17 【问题描述】:

我第一次创建 UIControlerView,似乎从未激活过代表。请告诉我哪里出错了。

谢谢! 顺便说一句,我通过从情节提要中拖动创建了 IBOutlet...

.h

#import <UIKit/UIKit.h>

@interface CollectionController : UIViewController<UICollectionViewDelegate,UICollectionViewDataSource>

@property (weak, nonatomic) IBOutlet UICollectionView *controllerTableView;

@end

.m

#import "CollectionController.h"
#import "CollectionVIewCell.h"

@interface CollectionController ()

@end

@implementation CollectionController

- (void)viewDidLoad

    [super viewDidLoad];
    [[self controllerTableView]setDelegate:self];
    [[self controllerTableView]setDataSource:self];
    // Do any additional setup after loading the view.

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    return 10;


-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
    return 1;



-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

    static NSString *cellIdentifier=@"Cell";
    CollectionVIewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    cell.labelDisplay.text=@"hi";
    //set up data in images

    return cell;


- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


@end

【问题讨论】:

从未激活是什么意思?您是否看到您的 10 个项目但没有“hi”文本,或者甚至没有一个单元格? 从不使用这些方法,我在每个方法中都设置了断点并且从未被激活 您确定已将您的 XIB 或 Storyboard 控制器链接到 CollectionController 吗? (Interface Builder 中的 Identity Inspector 选项卡) 不,我的意思是:在情节提要中,单击左侧窗格中的 CollectionView 控制器。然后,在右侧窗格中,转到第三个选项卡(身份检查器)并检查“自定义类”字段是否为 CollectionController 而不是 UICollectionViewController 好的,但目标是一样的。你的自定义类是CollectionController(这是你创建的自定义类,处理委托方法)而不是'UIViewController`so? 【参考方案1】:

尝试在 xib 中而不是在代码中连接您的 UICollectionView 的委托和数据源。

【讨论】:

如何在 IB 中连接它?我应该把它拖到哪里?【参考方案2】:

您的 controllerTableView 是否可能由于“弱”属性而被释放?尝试使用“strong”,看看是否有帮助。

【讨论】:

没有帮助:(还有什么?【参考方案3】:

我这里推错了,应该是

CollectionController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"CollectionController"];
    [self.navigationController pushViewController:controller animated:YES];

【讨论】:

【参考方案4】:

检查这个继承模块是否被选中

【讨论】:

以上是关于UIViewController 控制器无法识别委托的主要内容,如果未能解决你的问题,请参考以下文章

将按钮超级视图控制器添加到另一个视图控制器时,UIButton 目标无法识别

可以使用自定义 UIViewController 但没有自定义 UIView 类来实现手势识别吗?

转到 UITableViewController 后无法返回主 UIViewController

无法将 UIViewController 类型的值转换为 PatternDetailViewController

无法从 UIViewController 添加 UIView

无法加载 UIViewController