Я пытаюсь изменить данные о нажатии кнопки (в iPad) UICollectionViewCell
? Как это достичь? Как отправить разные array count
на номер numberOfItemsInSection
на кнопку Нажмите?Как изменить данные UICollectionView при нажатии кнопки ios?
В моих viewDidLoad
:
self.collectionViewImages=[[NSMutableArray alloc]initWithObjects:@"1.jpg",@"2.jpg",@"3.jpg",nil] ;
Тогда в CollectionViewMethods
:
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView
numberOfItemsInSection:(NSInteger)section
{
return [_collectionViewImages count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *myCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell"
forIndexPath:indexPath];
NSString *collectionViewImageName=[self.collectionViewImages objectAtIndex:indexPath.row];
UIImageView * collectionImage = (UIImageView*)[myCell viewWithTag:11];
collectionImage.image =[UIImage imageNamed:collectionViewImageName];
return myCell;
}
Тогда на ButtonClick-- (Как есть 4-5 кнопки я собираю тег каждой кнопки в NSInteger
и используя этот объект в numberOfItemsInSection
-(void)btnTapped:(id)sender{
int tag= [(UIButton *)sender tag];
NSLog(@"Button Pressed%d",tag);
_buttonIndex=tag;
//_buttonIndex is NSInteger property
//If i add object in NSMutableArray and call reloadData my UI hangs here only.
//If I empty my NSMutableArray and add new objects in it and then call reloadData, I am getting NSRangeException.
}
И теперь я использую это свойство в numberOfItemsInSection
как ...
if (_buttonIndex==1){
[collectionImage setImage:[UIImage imageNamed:[_array1 objectAtIndex:indexPath.row]]];
//My _array1 has 4 objects and my collectionViewImages array has 7 objects.
}
я получаю сообщение об ошибке, как
*** Terminating app due to uncaught exception 'NSRangeException',
reason: '*** -[__NSArrayM objectAtIndex:]: index 4 beyond bounds [0 .. 3]'
Вам необходимо обновить метод источника данных, который при необходимости возвращает соответствующее значение – CoolMonster
call [myCollectionview reloadData] после изменения источника данных. –
Измените источник данных 'UICollectionView' и вызовите' reloadData' на нем. Или вы хотите спросить что-то еще? – Amar