我有3节课。
UICollectionView
-
collectionViewClass.m
。 cells
- collectionView
myCells.m
的配置
myClass.m
的课程UICollectionView
。我想在label
中访问myClass.h
myCells.m
我该怎么办?
我试过了:
myClass *mainClass = [[myClass alloc] init];
mainClass.myLabel.text = @"Something";
但是这会创建myClass
的新实例。如何从myClass
访问相同的myCells
?
更新
myCells.h
@protocol myCellsDelegate
- (void)changeLabelName;
@end
@interface myCells : UICollectionViewCell
@property (strong, nonatomic) id<myCellsDelegate> delegate;
@end
myCells.m
- (void)someMethod
{
[self.delegate changeLabelName];
}
myClass.h
@interface MyViewController: UIViewController <myCellsDelegate>
myClass.m
- (void)changeLabelName {
NSLog(@"Something");
}
为什么NSLog
不运行?
更新2
这是我初始化cell
:
- (UICollectionView *)datesCollectionView
{
if (!_datesCollectionView) {
...
_datesCollectionView = [[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout:collectionViewLayout];
[_datesCollectionView registerClass:[myCells class] forCellWithReuseIdentifier:kDIDatepickerCellIndentifier];
_datesCollectionView.dataSource = self;
_datesCollectionView.delegate = self;
[self addSubview:_datesCollectionView];
}
return _datesCollectionView;
}
答案 0 :(得分:0)
你不能从你的手机中调用myClass。单元格应该只显示您的内容。相反,您应该使用delegation pattern。
您的单元格可以包含对实现您定义的特定协议的对象的引用。您可以通过此委托进行沟通并执行所需的功能。
答案 1 :(得分:0)
我看了你的代码。首先,我进入故事板并将标签的“标签”属性设置为“11”(只要没有其他标签使用该标签,它就可以是您想要的任何数字)。
然后在-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
我把这段代码:
UILabel *myLabel = [[UILabel alloc] init];
myLabel = (UILabel*)[collectionView viewWithTag:11];
//check myLabel.text against whatever you want
因此,最终方法如下所示,您可以添加自己的“isEqual或isEqualToString”检查:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
DIDatepickerCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kDIDatepickerCellIndentifier forIndexPath:indexPath];
UILabel *myLabel = [[UILabel alloc] init];
myLabel = (UILabel*)[collectionView viewWithTag:11];
//check myLabel.text against whatever you want
cell.date = [self.dates objectAtIndex:indexPath.item];
cell.itemSelectionColor = _selectedDateBottomLineColor;
return cell;
}