Я всего неделю в Xcode, пытаюсь чему-то научиться, поэтому могу внести свой вклад в проект.
До сих пор я изучал туториалы и кое-что сделал :) Но я далек от завершения. Я надеюсь, что кто-то поймет, что я буду спрашивать..
Я делаю приложение, которое будет брать данные с сервера, данные будут включать миниатюры изображений, изображения и текст. Прямо сейчас у меня есть контроллер представления коллекции с ячейкой с 3 кнопками (мне кажется, что их легче разместить в ячейке представления коллекции), фоном кнопки является определенное изображение (жестко запрограммированное на данный момент), и вам нужно контроллер представления, где отображается весь контент для этого элемента, ничего особенного :)
Но макет (дизайн) мне трудно добиться. В основном (насколько я понимаю) мне нужно иметь 4 ячейки представления коллекции с кнопками с разным расположением. Теперь у меня есть один контроллер представления коллекции с одним представлением коллекции, содержащим одну ячейку.
#import "CollectionViewController.h"
#import "CollectionViewCell.h"
#import "ImageDetailsViewController.h"
#import "StoryItem.h"
@interface CollectionViewController ()
{
NSArray *arrBigLeft;
NSArray *arrSmallTopR;
NSArray *arrSmallBotR;
}
@end
@implementation CollectionViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
arrBigLeft = [[NSArray alloc]initWithObjects:@"[email protected]", @"[email protected]", @"[email protected]", @"[email protected]", nil];
arrSmallTopR = [[NSArray alloc]initWithObjects:@"[email protected]", @"[email protected]", @"[email protected]", @"[email protected]", nil];
arrSmallBotR = [[NSArray alloc]initWithObjects:@"[email protected]", @"[email protected]", @"[email protected]", @"[email protected]", nil];
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"photoDetail1"]){
CollectionViewCell *cell = (CollectionViewCell *)sender;
NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell];
ImageDetailsViewController *idvc = (ImageDetailsViewController *)[segue destinationViewController];
idvc.img = [UIImage imageNamed:[arrBigLeft objectAtIndex:indexPath.item]];
}
if([segue.identifier isEqualToString:@"photoDetail2"]){
CollectionViewCell *cell = (CollectionViewCell *)sender;
NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell];
ImageDetailsViewController *idvc = (ImageDetailsViewController *)[segue destinationViewController];
idvc.img = [UIImage imageNamed:[arrSmallTopR objectAtIndex:indexPath.item]];
}
if([segue.identifier isEqualToString:@"photoDetail3"]){
CollectionViewCell *cell = (CollectionViewCell *)sender;
NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell];
ImageDetailsViewController *idvc = (ImageDetailsViewController *)[segue destinationViewController];
idvc.img = [UIImage imageNamed:[arrSmallBotR objectAtIndex:indexPath.item]];
}
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return [arrBigLeft count];
}
// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier=@"Cell";
CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
[[cell button1]setBackgroundImage:[UIImage imageNamed:[arrBigLeft objectAtIndex:indexPath.item]] forState:UIControlStateNormal];
[[cell button2]setBackgroundImage:[UIImage imageNamed:[arrSmallTopR objectAtIndex:indexPath.item]] forState:UIControlStateNormal];
[[cell button3]setBackgroundImage:[UIImage imageNamed:[arrSmallBotR objectAtIndex:indexPath.item]] forState:UIControlStateNormal];
return cell;
}
-(IBAction)returned:(UIStoryboardSegue *)segue {
}
@end
Это пока не работает так, как я хочу, но, по крайней мере, я получаю динамически создаваемые ячейки. Я хотел бы иметь возможность возвращать несколько ячеек с разными массивами элементов (изображений), и все они должны загружаться одновременно
здесь вы можете видеть только две ячейки, но вторую я добавил только для того, чтобы визуализировать то, что я пытаюсь объяснить (4 разные ячейки). Первая ячейка (из-за количества изображений) повторяется 4 раза, когда я запускаю приложение, если Я собирался добавить те же изображения во вторую ячейку, я хотел бы, чтобы они были как на скриншоте, и чтобы в дальнейшем повторять в том порядке, который равен количеству изображений (длина массива)
Если вам нужно больше кода, дайте мне знать .. спасибо!