2011-06-14 19 views
6

Im totalmente seguro de por qué mi accesorio vista no está funcionando. Simplemente quiero que aparezca un texto a la derecha de UITableViewCell (y también a la izquierda), pero solo se muestra el texto de la izquierda.UITableViewCell accesorio Vista que no muestra

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"]; 

    if (cell==nil){ 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease]; 
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, 60, 30)]; 

     cell.textLabel.text = @"left text"; 
     label.text = @"right text"; 

     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

     cell.accessoryView = label; 
     [label release]; 

    } 
    return cell; 
} 

¿Alguna idea? Gracias.

+0

Le sugiero que alinee la etiqueta primero a la derecha. Por defecto, se debe dejar la alineación de la etiqueta. Entonces, dos textos uno encima del otro podrían ser el problema. Y luego puedes decir: [cell.contentView addSubView: label]; –

Respuesta

24
cell.accessoryView = label; 

que configura el accessoryView a ser una etiqueta por lo que no va a ver ningún indicador de la divulgación. Si quieres título y el texto en su celular detalle a continuación, init con UITableViewCellStyleValue2 así ...

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"cellType"] autorelease]; 

... y luego establecer el título y el detalle como este ...

cell.textLabel.text = @"Title"; 
cell.detailTextLabel.text = @"Description"; 

Para tener una idea de los diferentes estilos construidos en la tabla comprobar la siguiente imagen ...

enter image description here

Se puede ajustar el textLabel y detailTextLabel a s tu gusto

+0

Si bien esto no responde mi pregunta directamente (tengo un UILabel que funciona como accesorio en otras partes de mi aplicación, así que no estoy seguro de por qué no funciona aquí), ciertamente me ha proporcionado algunas excelentes alternativas. La principal preocupación que tengo, sin embargo, es que el texto se trunca. ¿No hay forma de evitar esto (a menos que use mi propia celda personalizada)? –

+0

Estas alternativas, he concluido, eran la forma correcta de hacerlo. –

+0

¡Gracias, esto resolvió mi problema! –

6

¿Por qué esto? No puedes tener ambos.

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
+0

Es cierto. Mi error. Pero, sin embargo, mi pregunta sigue en pie si sacas esa línea de código. –

3
-(id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier 

se amortizan de IOS 3.0

En lugar de utilizar:

-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 

pasar en cualquier UITableViewCellStyleValue1 o UITableViewCellStyleValue2 y establecer las propiedades textLabel y detailTextLabel como sea necesario.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html%23//apple_ref/doc/uid/TP40006938-CH3-SW34

0

UITableViewCellStyleValue2 me da un estilo extraño. Creo que el estilo más solicitado es UITableViewCellStyleValue1 (al menos en mi caso).

0

Recuerde también: la propiedad tipo de accesorio se ignora si tiene accesorio accessView. Entonces, esta línea de código es excesiva.

Cuestiones relacionadas