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