2009-04-23 20 views
42

¿Hay alguna manera de configurar el UITableViewCell.image para que se muestre en el lado derecho de la celda en lugar de en el izquierdo? ¿O tendré que agregar un UIImageView separado en el lado derecho del diseño de la celda?UITableViewCell con imagen a la derecha?

Respuesta

74

No. Pero puede agregar fácilmente una vista de imagen como vista accesoria a una celda de tabla para obtener el mismo efecto.

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]]; 
cell.accessoryView = imageView; 
[imageView release]; 
+1

¿Cambiará la vista de accesorios y sobrescribirá el indicador de divulgación? –

+0

Sí, lo haría. Si quieres eso, entonces tienes que agregar manualmente un UIImageView a tu celular en la creación. O crea una subclase para tu celda especial de la tabla que envuelve todo muy bien para ti. –

+0

Hay un pequeño error en el método UIImage: debería decir [UIImage imageNamed: @ "foo.png"] – arooaroo

0

Este Soln es para agregar una imagen diferente en cada celda .... Sólo un Trate

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 

if(indexPath.row == 0) { 
    cell.image = [UIImage imageNamed:@"image.png"]; 
} 

else if (indexPath.row == 1) { 
    cell.image = [UIImage imageNamed:@"image1.png"]; 
} 
+0

No relevante a la pregunta? –

+0

El OP ya entiende cómo agregar una imagen usando la vista de imagen de la celda, que es lo que muestra todo este fragmento. Cómo colocar una imagen para que aparezca en el lado derecho es la pregunta. – arooaroo

2

Subclase UITableViewCell y anular layoutSubviews y luego simplemente ajustar los marcos de la self.textLabel, self.detailTextLabel y self.imageVer vistas.

Esta es la forma en que podría ser similar en código:

MYTableViewCell.h:

#import <UIKit/UIKit.h> 

@interface MYTableViewCell : UITableViewCell 
@end 

MYTableViewCell.m:

#import "MYTableViewCell.h" 

@implementation MYTableViewCell 

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    if (self.imageView.image) { 
     self.imageView.frame = CGRectMake(CGRectGetWidth(self.contentView.bounds) - 32 - 8, 
              CGRectGetMidY(self.contentView.bounds) - 16.0f, 
              32, 
              32); 
     CGRect frame = self.textLabel.frame; 
     frame.origin.x = 8; 
     self.textLabel.frame = frame; 
     frame = self.detailTextLabel.frame; 
     frame.origin.x = 8; 
     self.detailTextLabel.frame = frame; 
    } 
} 

@end 
0

Para añadir una imagen @ lado derecho en la celda, sugeriría Para crear una celda personalizada con vista de imagen en el lado derecho, será muy útil para usted. y agrega una vista vacía para vincular este plumín con la clase customcell.

Ahora, en el archivo de plumilla de su celda, elimine la vista, agregue tableViewcell y en esa celda arrastre & suelte un imageView al lado derecho.

Ahora ve a la clase del TableViewCell dicen DemoCell, crear una toma de corriente y la dejó con el imageview en punta del TableCell

Ahora, en el método cellForRowAtIndexPath de tableview referencia a su celular y usarlo con el nombre de la semilla como esto

static NSString *CellIdentifier = @"Cell"; 
DemoCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[SettingCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    cell = [[[NSBundle mainBundle]loadNibNamed:@"DemoCell" owner:self options:nil] lastObject]; 
} 

y establecer la imagen como por su exigencia

cell.imageVw.img ....

0

puede resi ze imagen en la vista de accesorios llamando al método setFrame de imageview como este: [imageView setFrame: CGRectMake (0, 0, 35.0, 35.0)];

5

Aquí se muestra un ejemplo en Swift con el enfoque de utilizar accessoryView:

private let reuseIdentifier: String = "your-cell-reuse-id" 

// MARK: UITableViewDataSource 

func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell : UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier) as? UITableViewCell 
    if (cell == nil) { 
    cell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier:reuseIdentifier) 
    } 

    cell!.textLabel!.text = "Hello" 
    cell!.detailTextLabel!.text = "World" 
    cell!.accessoryView = UIImageView(image:UIImage(named:"YourImageName")!) 
    return cell! 
} 
0

Es innecesario crear su propia imagen, sólo editar cell.tintColor.

10

Para los casos simples que usted puede hacer esto:

cell.contentView.transform = CGAffineTransformMakeScale(-1,1); 
cell.imageView.transform = CGAffineTransformMakeScale(-1,1); 
cell.textLabel.transform = CGAffineTransformMakeScale(-1,1); 
cell.textLabel.textAlignment = NSTextAlignmentRight; // optional 

Esto le dará la vuelta (espejo) la vista de contenido colocar cualquier imageView a la derecha. Tenga en cuenta que debe voltear el imageView y cualquier etiqueta de texto, ya que de lo contrario ¡se reflejarían! Esta solución conserva la vista de accesorios a la derecha.

4

Si no desea hacer una célula de medida y trabajará con un estándar, que tienen como mínimo dos maneras:

  1. de usar accessoryView.
cell.accessoryView = UIImageView(image: UIImage(named: "imageName")) 
cell.accessoryView.frame = CGRectMake(0, 0, 22, 22) 
  1. Si usted quiere tener la imagen de la derecha + accessoryView, a continuación, puede agregar salida UIImageView a ContentView (ejemplo nombre: rightImage) y cambiar el color de fondo de textLabel como Claro.
cell.rightImage.image = UIImage(named: "imageName") 
cell.textLabel.backgroundColor = UIColor.clearColor() 
0

Hay una manera de establecer el position mediante programación. Aquí está la versión Swift de la solución:

image.frame = CGRect.init(
x: self.view.frame.width - image.frame.width*1.1, 
y: image.frame.origin.y, 
width: image.frame.width, 
height: image.frame.height) 

Esto posicionará su imagen en el lado derecho de la celda. Esta solución está ajustando automáticamente la posición de acuerdo con el tamaño de la pantalla. El único inconveniente es cuando se gira el dispositivo que necesita para recargar sus datos, pero puede simplemente override en su clase UITableView el método didRotate oyente:

override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) { 
    _tableView.reloadData()} 
0

en swift3 y swift4, podemos use esto:

cell.accessoryView = UIImageView(image:UIImage(named:"imageNmae")!) 
Cuestiones relacionadas