0

我想在我的项目中以编程方式添加UICollectionView与自定义UICollectionViewCell。应用程序崩溃,同时以编程方式添加UICollectionView

这里是我的实现添加的CollectionView

- (void)setUpCollectionView{ 
    UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init]; 
    layout.scrollDirection = UICollectionViewScrollDirectionVertical; 
    [layout setMinimumLineSpacing:1]; 
    [layout setMinimumInteritemSpacing:1]; 
    [layout setSectionInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    [layout setScrollDirection:UICollectionViewScrollDirectionVertical]; 

    self.collectionView =[[UICollectionView alloc] initWithFrame:self.vwChecklistsContainer.frame collectionViewLayout:layout]; 
    [self.collectionView setDataSource:self]; 
    [self.collectionView setDelegate:self]; 

    UINib *cellNib = [UINib nibWithNibName:@"MyChecklistsCell" bundle:nil]; 
    [self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyChecklistsCell"]; 
    [self.vwChecklistsContainer addSubview:self.collectionView]; 
} 

这种 “setUpCollectionView” 功能,从我的视图控制器的viewDidLoad中()调用。

我刚在MyChecklistsCell中实现了这两个函数。

- (void)awakeFromNib { 
    [super awakeFromNib]; 
    // Initialization code 
} 

- (void)setData:(NSDictionary *)dict{ 
    self.lblChecklistType = dict[SERVER_CHECKLIST_TYPE]; 
    self.lblEndTime = dict[SERVER_END_TIME]; 
    self.lblStartTime = dict[SERVER_START_TIME]; 
    self.lblDescription = dict[SERVER_DESCRIPTION]; 
} 

任何人都可以帮助我吗?谢谢。

+0

“应用程序崩溃”:什么是错误信息? – Larme

+0

@Larme只显示此错误消息“ - [__ NSCFNumber长度]:无法识别的选择器发送到实例0xb000000000000043” –

+0

@NyeinEiEiTun setData方法中的问题 –

回答

1

试试这个。

- (void)setData:(NSDictionary *)dict{ 
     self.lblChecklistType = [NSString stringWithFormat:@"%@",dict[SERVER_CHECKLIST_TYPE]]; 
     self.lblEndTime = [NSString stringWithFormat:@"%@",dict[SERVER_END_TIME]]; ; 
     self.lblStartTime = [NSString stringWithFormat:@"%@",dict[SERVER_START_TIME]]; ; 
     self.lblDescription = [NSString stringWithFormat:@"%@",dict[SERVER_DESCRIPTION]]; 
    } 

错误表示您在NSNumber上使用NSString方法。请检查您的数据是否是字符串。

希望它有帮助。

+0

奇怪!委托函数“cellForItemAtIndexPath”甚至没有被触发。因为我在该代理中调用了setData函数。我在这行后崩溃了“[self.vwChecklistsContainer addSubview:self.collectionView];”从“setUpCollectionView”功能。 –

+0

最后我找到了问题的根源。你是对的。在将数据设置为UICollectionView之前,我需要将数据设置为myViewController视图中的标签。当我将数据设置到ViewController时,我没有将值转换为String。这就是我得到错误的原因。感谢您的回答。 –

1

看起来像你试图将标签设置为NSNumber。这里的问题是使用字典来保存数据,而不进行任何类型检查。考虑使用对象来存储数据,而不是字典。这会让你更清楚你试图设置和避免未来问题的属性。

或者,您所评论的错误消息似乎只引用了内存地址,而不是可能表明您没有正确保留集合视图或其他属性的对象 - 您是否仔细检查了所有引用是正确的强还是弱?

+0

奇怪!委托函数“cellForItemAtIndexPath”甚至没有被触发。因为我在该代理中调用了setData函数。我在这行后崩溃了“[self.vwChecklistsContainer addSubview:self.collectionView];”从“setUpCollectionView”功能。 –

+0

最后我发现了问题的根源。你是对的。在将数据设置为UICollectionView之前,我需要将数据设置为myViewController视图中的标签。当我将数据设置到ViewController时,我没有将值转换为String。这就是我得到错误的原因。感谢您的回答。 –

相关问题