Проблема с перезагрузкой данных UICollectionView

Я не знаю, что происходит, но мой UICollectionView не перезагружается автоматически из другого класса.

У меня есть UICollectionView в классе 1, и я обновляю данные в нем, вызывая новый массив из класса 2.

    class1:

In view DidLoad

      UICollectionViewFlowLayout *aFlowLayout = [[UICollectionViewFlowLayout alloc] init];
    [aFlowLayout setItemSize:CGSizeMake(self.view.frame.size.width/2 - 15, self.view.frame.size.height/3 - 30)];
    [aFlowLayout setSectionInset:UIEdgeInsetsMake(10,10,10,10)];
    [aFlowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];

    self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width, self.view.frame.size.height) collectionViewLayout:aFlowLayout];

    [self.collectionView registerClass:[searchedPersonsCell class] forCellWithReuseIdentifier:@"SongCell"];
    [self.collectionView setBackgroundColor:[UIColor clearColor]];
    self.collectionView.delegate = self;
    self.collectionView.dataSource=self;

    self.collectionView.scrollEnabled=YES;
    self.collectionView.alwaysBounceVertical=YES;
    [self.view addSubview:self.collectionView];

    [self.collectionView performSelector:@selector(reloadData) withObject:nil afterDelay:0];

-(void) reloadPersonsData:(NSMutableArray*)newArray
{
    NSLog(@"success");
    self.personsArray =newArray;
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.collectionView reloadData];
        [self.collectionView performSelector:@selector(reloadData) withObject:nil afterDelay:0];
        [self.collectionView setNeedsDisplay];
        [self.collectionView setNeedsLayout];

        [CATransaction flush];
//        [NSTimer scheduledTimerWithTimeInterval:0.3 target:self.collectionView selector:@selector(reload) userInfo:nil repeats:NO];

        //tried all the above
    });
}

когда пользователь запрашивает больше людей, я получаю доступ к классу 2 по протоколу,

Сейчас во 2 классе:

Я получаю новый массив, передавая его в массив свойств в классе 1 (он успешно передан, и я проверил его из отладки), затем вызываю функцию reloadPersonsData из класса 2 в класс 1 (выводится «успех» nslog, поэтому он обращается к методу. Но Ничего не произошло!! numberOfItemsInSection или numberOfsection не вызываются!! и представление коллекции не обновляется

Странная вещь, если я вызываю тот же метод reloadPersonsData внутри class1 с помощью кнопки, я обновляю UiCollectionView!!! так что же здесь не так? почему он не перезагружается при вызове из другого класса, кто-нибудь может мне помочь?

Спасибо


person Iphone User    schedule 05.04.2014    source источник
comment
@Jaeger Я попробовал это сейчас, но безуспешно, все еще не перезагружая :(   -  person Iphone User    schedule 05.04.2014
comment
Проверьте, совпадает ли экземпляр, принадлежащий классу 2 из класса 1, с экземпляром класса 1.   -  person Mustafa Ibrahim    schedule 05.04.2014
comment
@MustafaIbrahim да, это то же самое, класс 2 - мой основной класс, я создаю экземпляр класса 1 в viewDidLoad класса 2 только один раз, когда пользователю нужно больше данных в классе 1, я повторно получил доступ к моему основному классу (классу 2) из ​​протокола, затем вызов метода в class1 без создания нового экземпляра class1   -  person Iphone User    schedule 05.04.2014
comment
Попробуйте вызвать reloaddata в viewWillAppear и viewDidAppear   -  person Mustafa Ibrahim    schedule 05.04.2014
comment
@MustafaIbrahim это не сработает в моем случае, потому что, когда пользователь запрашивает дополнительные данные, я просто показываю диалоговое окно «Подождите» в классе 1, ожидая новый массив, поэтому viewWillAppear и viewDidAppear не будут вызываться при получении новых данных, потому что пользователь уже на этой странице   -  person Iphone User    schedule 05.04.2014
comment
@MustafaIbrahim, извините, мой плохой!!! теперь я обнаружил, что создаю новый экземпляр class1 при вызове процесса newData. Большое спасибо за вашу помощь ... сделайте свой ответ ответом, чтобы я мог считать его ответом .. Еще раз спасибо :)   -  person Iphone User    schedule 05.04.2014
comment
@MustafaIbrahim Спасибо, я буду рад сделать ваш ответ ответом, если вы добавите его в раздел ответов.   -  person Iphone User    schedule 05.04.2014
comment
@IphoneUser спасибо :)   -  person Mustafa Ibrahim    schedule 05.04.2014


Ответы (1)


Просто проверьте, совпадает ли экземпляр, принадлежащий классу 2 из класса 1, с классом 1.

Удачи

person Mustafa Ibrahim    schedule 05.04.2014