objective-c - iOS关于NSMutableArray保存UITableViewCell对象后,cell取值出现错乱,请问什么原因?
PHP中文网
PHP中文网 2017-04-17 17:44:27
0
1
298

将UITableViewCell对象cell添加进NSMutableArray后,后续取值时,cell的textLable的text属性出现错乱,与cell本来的textLable的text不同,这是什么原因造成的呢?

比如:

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString * timeRing = @"ring"; UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:timeRing]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:timeRing]; }else{ while ([cell.contentView.subviews lastObject]!=nil) { [[cell.contentView.subviews lastObject] removeFromSuperview]; } } cell.accessoryType = UITableViewCellAccessoryNone; if (self.cellArray.count

这种情况下cell = self.cellArray[indexPath.row];就会失效,取出来的值是错乱的

PHP中文网
PHP中文网

认证高级PHP讲师

reply all (1)
巴扎黑

问题已解决,自己来回答一下吧。
原因是数组中存储的cell是其实质是指向对象的指针,当复用cell时,指针指向的是复用前的对象,所得到的值是复用前的cell的值。所以就会出现值错乱情况,解决办法是把cell的各个属性单独存进数组中,或是提前用一个模型在复用cell时重新赋值一遍。

    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!