Tengo una costumbre UICollectionViewCell que tiene un fondo personalizado vista que se dibuja utilizando uno de los varios esquemas de color. El esquema de color para el fondo de la vista se fija en mi costumbre de inicializador -(id)initWithFrame:andColourPalette: para la Vista.

Tengo una costumbre similar initialiser en mi UICustomViewCell subclase, pero no puedo averiguar cómo llamar a esta initialiser cuando voy a configurar el celular en cellForItemAtIndexPath:

Alguien me puede ayudar a hacer esto? O ofrecer alternativas de solución para el paso de este Diccionario de los colores dentro de la Célula para pasar a la subvista?

EDITAR para mostrar más detalles:

Esto es lo que tengo en mi UICollectionView VC:

En ViewWillAppear:

[self.collectionView registerClass:[OPOLawCollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];
self.colourPalette = [OPOColourPalette greenyColourPalette];

En cellForItemAtIndexPath:

UICollectionViewCell *cell          = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_ID forIndexPath:indexPath];
OPOLawCollectionViewCell *lawCell   = (OPOLawCollectionViewCell *)cell;

MainLevel *level                    = self.collectionData[indexPath.row];
lawCell.delegate                    = self;
lawCell.colourPalette               = self.colourPalette;

En mi Costumbre UICollectionViewCell

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        //get background view
        OPOLawBook *lawBookView = [[OPOLawBook alloc]initWithFrame:CGRectMake(0, 0, 200, 265) andColourPalette:self.colourPalette];

Pero que no funciona, supongo que porque los propertys no están configurados.

Si puedo cambiar la última línea de este, entonces funciona bien:

    OPOLawBook *lawBookView = [[OPOLawBook alloc]initWithFrame:CGRectMake(0, 0, 200, 265) andColourPalette:[OPOColorPalette greenyColorPalette]];

Así que supongo que tengo que usar un custom intialiser aquí, pero no puedo averiguar cómo llamarlo , o de donde…

Gracias

OriginalEl autor Bertie | 2013-07-01

3 Comentarios

  1. 12

    Usted tiene que registrar su customCells en collectionView:

    [self.collectionView_ registerClass:[YourCustomClass class]
            forCellWithReuseIdentifier:@"CustomCell"];

    Y, a continuación, en su método de cellForItemAtIndexPath:

     YourCustomClass *cell = (YourCustomClass *)[collectionView 
             dequeueReusableCellWithReuseIdentifier:@"CustomCell" forIndexPath:indexPath];

    Se hace debido a que collectionView podría tener 1000 células y 10 visible. No mantener todos ellos inicializado y reutilización cuando sea posible.

    EDITAR

    Debe establecer colorPaletter después deque el reutilizables de la célula. Piense en ello como un contenedor que puede contener cualquier color. Usted necesita determinar (por indexpath) ¿de qué color pintar.

    Estoy haciendo esto ya, pero tengo que decirle a la celda de qué color para dibujar los gráficos de fondo. Si pongo una propiedad en la Celda para colourPalette y, a continuación, establezca esta en cellForItemAtIndexPath: no funciona porque no se establece la propiedad antes de que el celular trae de fondo. Así que yo creo que es necesario reemplazar el initWithFrame: por lo que utiliza mi initWithFrame:andColourPalette: método.
    Me he puesto un poco de código en la cuestión para dar más detalle
    usted no debe hacer nada vinculado al índice de la celda en la inicialización. Usted necesita ser capaz de hacer estas personalizaciones después de sacarlo de la cola de la célula.
    Yo realmente no necesita estar vinculado con el índice de la celda. Solo que si la célula se denomina de esta collectionView debe ser de un color en particular… Si se llama desde un diferente CollectionView necesita ser de otro color.
    ¿qué hace que un problema para establecer el color después de sacarlo de la cola de la célula?

    OriginalEl autor Tala

  2. 2

    Que no debes hacer a continuación si el celular está en el Storyboard,

    [self.collectionView registerClass:[OPOLawCollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];

    Porque Storyboard tomar la responsabilidad de registrar Cell_ID propia.
    Ahora, el conflicto se genera Celda no válido si el uso de ambos.

    OriginalEl autor Y.Muranaka

  3. 2

    Forma, cada respuesta. El interrogador está buscando una manera de identificar de forma única cada celda en la inicialización, que ocurre antes de la cola de una celda, y antes de una célula del acceso a su índice de ruta de acceso de la propiedad.

    La única manera de hacerlo es asignar un único reutilización identificador a cada célula basada en lo que el índice de valor de la ruta será (suponiendo que se sabe lo que va a ser—y, en su caso, la voluntad); luego, cuando la cola de la celda, utilice la ruta del índice para encontrar la celda con el correspondiente reutilización identificador.

    Hace esto niega el propósito de la reutilización de los identificadores? Por supuesto que no. Vas a ser la reutilización de ese celular cada vez que usted necesita para usar de nuevo. La reutilización de los identificadores no estaban destinados a limitar a una galleta-cortador de células para cada célula en tu colección; ellos también tienen el propósito de «uso exclusivo» de los identificadores.

    OriginalEl autor James Bush

Dejar respuesta

Please enter your comment!
Please enter your name here