Я пытаюсь использовать специальную ячейку CollectionView, где мне нужно обновить ячейку из собственного класса ячейки коллекции.Collection View Совокупность статических переменных изменяется при добавлении новой ячейки
Вот обычай клеточно-класс
Cell_Obj.h
#import <UIKit/UIKit.h>
@interface Cell_Obj : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *label;
- (void)changeImage;
- (void)updateTextLabelName:(NSString*)str;
@end
Cell_Obj.m
#import "Cell_Obj.h"
static NSString *labelTxt ;
@implementation Cell_Obj{
}
+ (void)initialize {
if (self == [Cell_Obj class]) {
labelTxt = [[NSString alloc] init];
}
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (void)awakeFromNib {
_label.text = labelTxt;
[NSTimer scheduledTimerWithTimeInterval:2.0f
target:self
selector:@selector(updateLabel)
userInfo:nil
repeats:YES];
}
- (void)updateLabel
{
NSString * txt = [NSString stringWithFormat:@"%@",labelTxt];
_label.text = txt;
}
- (void)updateTextLabelName :(NSString*)str
{
labelTxt = str;
}
@end
Где в viewCotroller я добавляю клетку, как,
- (void)addCell
{
Cell_Obj *cell = [[Cell_Obj alloc] init];
NSString * txt = [NSString stringWithFormat:@"%d",[GridArray count]];
[cell updateTextLabelName: txt];
[GridArray addObject:cell];
[_collection insertItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:[GridArray count]-1 inSection:0]]];
}
Проблема с приведенным выше кодом заключается в том, что когда я добавляю первую ячейку, метка первой ячейки равна 0, и это нормально, но когда я добавляю вторую ячейку, и звонок таймера происходит, то и cell1, и cell2 имеют значение метки 1. И он должен иметь 0,1 соответственно.
И похоже, что объект ячейки использует статическую переменную, когда любое обновление происходит в уже созданной ячейке, например событие таймера.
Почему это происходит, есть ли какая-либо ошибка в моем подходе?
Пожалуйста, дайте мне знать ваше ценное предложение.
Редактировать
На основе ниже ответ я переместил статическую переменную в качестве переменной экземпляра,
@implementation Cell_Obj{
NSString *labelTxt ;
}
но внутри updateLabel
labelTxt
равна нулю. Где, когда я отлаживаю updateTextLabelName
, вызывается до updateLabel
, а labelTxt
имеет правильное значение.
Можете ли вы предоставить мне некоторую ссылку. – CodeDezk
См. [Https://www.appcoda.com/ios-programming-uicollectionview-tutorial/](https://www.appcoda.com/ios-programming-uicollectionview-tutorial/) – Lion
Есть ли у вас какое-либо представление о вопрос, который я разместил здесь http://stackoverflow.com/questions/38748949/ios-declare-boost-class-as-class-variable – CodeDezk