Pregunta

Necesito presentar mi vista de tabla con una lista de dos columnas. Leí algunas publicaciones relacionadas sobre cómo hacer una cuadrícula anulando el dibujo (aquí). Sin embargo, estoy buscando una manera simple de diseñar mi celda con IB en NIB, luego cargarla y empujar dos celdas en cada fila. El ejemplo con DrawRect no es apropiado porque implica la configuración manual de posiciones. Solo necesito empujar esas dos celdas con algo de autosización, eso es todo. ¿Es posible?

Estoy buscando algo como (en CellforrowatIndExpath):

cell.contentView = emptyUIViewContainer;
[cell.contentView addSubview:FirstColumnUIView];
[cell.contentView addSubview:SecondColumnUIView];

No necesito tener dos puntas separadas para esas dos columnas porque cada columna es del mismo formato solo con algunos otros datos. ¿Algunas ideas?

Actualización: Intuitivamente, estoy tratando de hacer algo como esto:

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

  static NSString *CellIdentifier = @"Cell";
  UITableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell1 == nil) {
    cell1 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
  }
  // Configure the first cell.
  cell1.textLabel.text = ...some text

  // Configure the second cell
  UITableViewCell *cell2 = [[UITableViewCell alloc] init];
  cell2.textLabel.text = ...some text

  //set row as container for two cells    
  UITableViewCell *twoColumnRowView = [[UIView alloc] init]; //initWithFrame:CGRectMake(0, 0, 200, 20)];

  cell1.contentView.frame = CGRectMake(0, 0, 100, 20);
  [twoColumnRowView addSubview:cell1];
  cell2.contentView.frame = CGRectMake(100, 0, 100, 20);
  [twoColumnRowView addSubview:cell2];

  return twoColumnRowView; // cell;
}

Es solo un prototipo en bruto con el que estoy jugando ahora. Pero el código se bloquea en tiempo de ejecución con la "aplicación de terminación debido a la excepción no captura 'nsinvalidarGumentException', razon: '-[UIView SettableViewStyle:]: Selector no reconocido enviado a instancia"

Actualización 2. He cambiado un código para ver más práctico. Extraño, pero después de varios intentos, hice que la aplicación funcionara sin bloqueo, pero con un extraño fondo negro en todas las celdas. Aquí está el código:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *FirstCellIdentifier = @"FirstCellIdentifier"; 
  static NSString *SecondCellIdentifier = @"SecondCellIdentifier";

  // initialize first cell
  UITableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:FirstCellIdentifier];

  if (cell1 == nil) {
    cell1 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstCellIdentifier] autorelease];
  }

  //initialize second cell
  UITableViewCell *cell2 = [tableView dequeueReusableCellWithIdentifier:SecondCellIdentifier];

  if (cell2 == nil) {
    cell2 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SecondCellIdentifier] autorelease];
  }

  cell1.textLabel.text = ...data
  cell2.textLabel.text = ...data

  UITableViewCell *twoColumnRowView = [[UITableViewCell alloc] init];

  [twoColumnRowView addSubview:cell1];
  //cell2.contentView.frame = CGRectMake(100, 0, 100, 20);
  [twoColumnRowView addSubview:cell2];

  return twoColumnRowView; // cell;
}

No estoy reutilizando TwocolumnRowView, pero ambos sí.

¿Fue útil?

Solución

No puede (o al menos no debe) poner dos vistas de mesa una al lado de la otra. Y, como ya sabe, una vista de tabla solo tiene una sola columna.

Sin embargo, puede poner tantos datos como desee en cada celda.

Puedes hacer la mayor parte de esto en Interface Builder. Crear un xib con un UITableViewCell. Arrastra y deja caer un par de UILabels en el lugar correcto. Puede actualizar las etiquetas encontrándolas con el viewWithTag: método, pero sería mejor crear una personalización UITableViewCell clase con propiedades que apuntan a cada etiqueta.

Dado que las tablas son tan centrales para UIKIT, hay muchas muestras en el conjunto de documentación de Apple y algunas buenas charlas del WWDC. Puede descargar los videos de iTunes.

Otros consejos

Espero que esto te ayudará...

http://www.iphonedevx.com/?p=153

De lo contrario, la mejor manera es poner dos vistas de mesa una al lado de la otra, si necesitan desplazarse de forma independiente.

Espero que esto te ayudará...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top